[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [builders/rbm] 02/02: Bug 40010: Add git_branch option



This is an automated email from the git hooks/post-receive script.

boklm pushed a commit to branch main
in repository builders/rbm.

commit 8ed3aa1c0b65c711947df2f0d483215510514253
Author: Jeremy Rand <jeremyrand@xxxxxxxxxxxxx>
AuthorDate: Sat May 7 21:05:47 2022 +0000

    Bug 40010: Add git_branch option
---
 doc/options_tar.asc |  6 ++++++
 lib/RBM.pm          | 15 +++++++++------
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/doc/options_tar.asc b/doc/options_tar.asc
index 40e2cc5..898b47c 100644
--- a/doc/options_tar.asc
+++ b/doc/options_tar.asc
@@ -25,6 +25,12 @@ git_depth::
         depth, to decrease network and storage usage.  If not set,
         shallow clone/fetch is disabled.
 
+git_branch::
+        A Git ref name that will be exclusively cloned/fetched, to
+        decrease network and storage usage.  Must be a descendent
+        (inclusive) of git_hash.  If not set, all Git refs are
+        cloned/fetched.
+
 compress_tar::
         If set, the tarball created will be compressed in the select
         format. Possible values: xz, gz, bz2. The default is gz but it
diff --git a/lib/RBM.pm b/lib/RBM.pm
index fc9a7a1..d8e7b13 100644
--- a/lib/RBM.pm
+++ b/lib/RBM.pm
@@ -447,6 +447,11 @@ sub git_clone_fetch_chdir {
         push @clone_opts, ("--depth=$git_depth");
         push @fetch_opts, ("--depth=$git_depth");
     }
+    my @fetch_refs = ('+refs/heads/*:refs/heads/*', '+refs/tags/*:refs/tags/*');
+    if (my $git_branch = project_config($project, 'git_branch', $options)) {
+        push @clone_opts, ('--branch', $git_branch, '--single-branch');
+        @fetch_refs = ($git_branch);
+    }
     if (!chdir rbm_path("$clonedir/$project")) {
         chdir $clonedir || exit_error "Can't enter directory $clonedir: $!";
         if (system('git', 'clone', @clone_opts, $git_url, $project) != 0) {
@@ -462,12 +467,10 @@ sub git_clone_fetch_chdir {
             system('git', 'checkout', '-q', '--detach') == 0
                 || exit_error "Error running git checkout --detach";
         }
-        system('git', 'fetch', @fetch_opts, 'origin',
-                                '+refs/heads/*:refs/heads/*') == 0
-                || exit_error "Error fetching git repository";
-        system('git', 'fetch', @fetch_opts, 'origin',
-                                '+refs/tags/*:refs/tags/*') == 0
-                || exit_error "Error fetching git repository";
+        for my $fetch_ref (@fetch_refs) {
+            system('git', 'fetch', @fetch_opts, 'origin', $fetch_ref) == 0
+                || exit_error "Error fetching $fetch_ref from git repository $git_url";
+        }
         $config->{_rbm}{fetched_projects}{$project} = 1;
     }
 }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits