ref: ba26692dbfcbea5231d02edd318a5dfbf8f22db3
parent: 221e7c96b417e63b291f83714d9dbcbb253a2e4b
author: Ori Bernstein <ori@eigenstate.org>
date: Wed Dec 9 12:54:52 EST 2020
git/branch: implcitly create local branch off origin Currently, creating a local branch off a remote one requires passing the '-nb origin/$branch' argument to git/branch. In addition to being annoying, it opens up the possibility for human error, since passing this argument for an existing branch will clobber it. After this change, a repo in this state: % git/branch -a heads/master remote/origin/master remote/origin/foo will switch to heads/master when running: % git/branch master but will create a new branch foo, based off origin/foo, when running: % git/branch foo
--- a/branch
+++ b/branch
@@ -51,10 +51,12 @@
exit
}
if(~ $#newbr 0){
- if(! test -e .git/$new)
- die could not find branch $branch
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
echo updating $new to $commit