diff options
author | Ori Bernstein <ori@eigenstate.org> | 2021-06-16 15:25:02 +0000 |
---|---|---|
committer | Ori Bernstein <ori@eigenstate.org> | 2021-06-16 15:25:02 +0000 |
commit | 1da1ac52d201bdc6656b91a4b1792581120b2d09 (patch) | |
tree | 3b969703d570de33dfeb8a926bd57c44350374cb | |
parent | 7f697e822b2efd5c757141720469d105a5605ca4 (diff) | |
download | plan9front-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-x | sys/src/cmd/git/branch | 17 |
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} |