This is an automated email from the git hooks/post-receive script.
gk pushed a commit to branch master in repository builders/rbm.
The following commit(s) were added to refs/heads/master by this push: new 86f77f6 Bug 40038: Fix archiving of nested git submodules 86f77f6 is described below
commit 86f77f63259a030315e0c20e80fa02ed3ab2688c Author: Nicolas Vigier boklm@torproject.org AuthorDate: Mon Apr 25 12:30:25 2022 +0200
Bug 40038: Fix archiving of nested git submodules --- lib/RBM.pm | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-)
diff --git a/lib/RBM.pm b/lib/RBM.pm index 8387fa3..24c6d44 100644 --- a/lib/RBM.pm +++ b/lib/RBM.pm @@ -478,6 +478,19 @@ sub run_script { return @res == 1 ? $res[0] : @res; }
+sub git_submodule_init_sync_update { + foreach my $action ( + ['init'], + ['sync', '--recursive'], + ['update', '--recursive'] + ) { + my ($stdout, $stderr, $success, $exit_code) = + capture_exec('git', 'submodule', @$action); + exit_error "Error running git submodule " . join(' ', @$action) . "\n$stderr" + unless $success; + } +} + sub execute { my ($project, $cmd, $options) = @_; CORE::state %cache; @@ -492,14 +505,8 @@ sub execute { my ($stdout, $stderr, $success, $exit_code) = capture_exec('git', 'checkout', $git_hash); exit_error "Cannot checkout $git_hash:\n$stderr" unless $success; - if (project_config($project, 'git_submodule', $options)) { - foreach my $action (qw(init sync update)) { - ($stdout, $stderr, $success, $exit_code) - = capture_exec('git', 'submodule', $action); - exit_error "Error running git submodule $action\n$stderr" - unless $success; - } - } + git_submodule_init_sync_update() + if project_config($project, 'git_submodule', $options); } elsif (project_config($project, 'hg_url', $options)) { my $hg_hash = project_config($project, 'hg_hash', $options) || exit_error "No hg_hash specified for project $project"; @@ -574,15 +581,10 @@ sub maketar { my ($stdout, $stderr, $success, $exit_code) = capture_exec('git', 'checkout', $commit_hash); exit_error "Cannot checkout $commit_hash: $stderr" unless $success; - foreach my $action (qw(init sync update)) { - ($stdout, $stderr, $success, $exit_code) - = capture_exec('git', 'submodule', $action); - exit_error "Error running git submodule $action\n$stderr" - unless $success; - } + git_submodule_init_sync_update(); ($stdout, $stderr, $success, $exit_code) - = capture_exec('git', 'submodule', 'foreach', - "git archive --prefix=$project-$version/$path/" + = capture_exec('git', 'submodule', 'foreach', '--recursive', + "git archive --prefix=$project-$version/$displaypath/" . " --output=$tmpdir/submodule.tar $sha1;" . "tar -Af "$dest_dir/$tar_file" $tmpdir/submodule.tar"); exit_error 'Error running git archive on submodules.' unless $success;
tor-commits@lists.torproject.org