[tbb-commits] [rbm/master] Only run 'git checkout --detach' when necessary
boklm at torproject.org
boklm at torproject.org
Tue Aug 1 20:50:28 UTC 2017
commit ff4299fcf372aef5d28fe7024a60d81d413fcd6f
Author: Nicolas Vigier <boklm at torproject.org>
Date: Tue Aug 1 22:40:16 2017 +0200
Only run 'git checkout --detach' when necessary
Before updating local branches, we need to detach HEAD to be able to
update the current branch. However, we only need to do that if we are
on a branch, and when this branch exists.
This avoids an error when the repository we have cloned does not have a
master branch: in that case we are in a branch that does not exist,
which cause an error when running 'git checkout --detach'.
---
lib/RBM.pm | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/lib/RBM.pm b/lib/RBM.pm
index 6825050..888c3e1 100644
--- a/lib/RBM.pm
+++ b/lib/RBM.pm
@@ -390,8 +390,12 @@ sub git_clone_fetch_chdir {
if (git_need_fetch($project, $options)) {
system('git', 'remote', 'set-url', 'origin', $git_url) == 0
|| exit_error "Error setting git remote";
- system('git', 'checkout', '-q', '--detach') == 0
+ my ($ref, undef, $success) = capture_exec('git', 'symbolic-ref', 'HEAD');
+ chomp $ref;
+ if ($success && -e ".git/$ref") {
+ system('git', 'checkout', '-q', '--detach') == 0
|| exit_error "Error running git checkout --detach";
+ }
system('git', 'fetch', @fetch_submod, 'origin',
'+refs/heads/*:refs/heads/*') == 0
|| exit_error "Error fetching git repository";
More information about the tbb-commits
mailing list