summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOri Bernstein <ori@eigenstate.org>2021-06-16 15:25:02 +0000
committerOri Bernstein <ori@eigenstate.org>2021-06-16 15:25:02 +0000
commit1da1ac52d201bdc6656b91a4b1792581120b2d09 (patch)
tree3b969703d570de33dfeb8a926bd57c44350374cb
parent7f697e822b2efd5c757141720469d105a5605ca4 (diff)
downloadplan9front-1da1ac52d201bdc6656b91a4b1792581120b2d09.tar.xz
git/branch: resolve implicit branch switch before using it
When switching a branch implicitly -- ie, creating a local branch off of a remote branch -- we would get the list of changed files before we would resolve the implicit branch switch, leading to an empty list of changes.
-rwxr-xr-xsys/src/cmd/git/branch17
1 files changed, 9 insertions, 8 deletions
diff --git a/sys/src/cmd/git/branch b/sys/src/cmd/git/branch
index d3aa77d2b..bf2027cc7 100755
--- a/sys/src/cmd/git/branch
+++ b/sys/src/cmd/git/branch
@@ -37,6 +37,15 @@ if not if(test -e .git/$new)
if not
base=`{git/query HEAD}
+if(~ $#newbr 0){
+ if(! ~ $#baseref 0)
+ die update would clobber $branch with $baseref
+ baseref=`$nl{echo -n $new | sed s@refs/heads/@refs/remotes/origin/@}
+ echo $baseref
+ if(! test -e .git/$new)
+ if(! base=`{git/query $baseref})
+ die could not find branch $branch
+}
modified=`$nl{git/query -c HEAD $base | grep '^[^-]' | subst '^..'}
deleted=`$nl{git/query -c HEAD $base | grep '^-' | subst '^..'}
@@ -49,14 +58,6 @@ if(~ $delete 1){
echo 'deleted branch' $new
exit
}
-if(~ $#newbr 0){
- if(! ~ $#baseref 0)
- die update would clobber $branch with $baseref
- baseref=`$nl{echo -n $new | sed s@refs/heads/@refs/remotes/origin/@}
- if(! test -e .git/$new)
- if(! base=`{git/query $baseref})
- die could not find branch $branch
-}
commit=`{git/query $base} || die 'branch does not exist:' $base
if(~ $new */*)
mkdir -p .git/`{basename -d $new}