commit 8adbc46dc9e8358abad75ac81faf4646d8165b9e Author: Nicolas Vigier boklm@torproject.org Date: Mon Apr 9 18:54:04 2018 +0200
Bug 25746: fix git_submodule option with submodule in subdirectory
To create an archive containing all submodules, we were creating a temporary archive of each submodule before appending them to the main archive. We were using the submodule path in the temporary archive filename, which was failing if the submodule is in a subdirectory. To avoid that, we are removing the path from the temporary archive's filename and directly appending it to the main archive. --- lib/RBM.pm | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/lib/RBM.pm b/lib/RBM.pm index f987130..8875a7c 100644 --- a/lib/RBM.pm +++ b/lib/RBM.pm @@ -557,13 +557,9 @@ sub maketar { ($stdout, $stderr, $success, $exit_code) = capture_exec('git', 'submodule', 'foreach', "git archive --prefix=$project-$version/$path/" - . " --output=$tmpdir/submodule-$name.tar $sha1"); + . " --output=$tmpdir/submodule.tar $sha1;" + . "tar -Af "$dest_dir/$tar_file" $tmpdir/submodule.tar"); exit_error 'Error running git archive on submodules.' unless $success; - foreach my $file (sort glob "$tmpdir/*.tar") { - ($stdout, $stderr, $success, $exit_code) - = capture_exec('tar', '-Af', "$dest_dir/$tar_file", $file); - exit_error "Error appending submodule tar:\n$stderr" unless $success; - } } } else { system('hg', 'archive', '-r', $commit_hash, '-t', 'tar',