From: Brandon Casey Date: Thu, 07 Jun 2007 22:51:08 GMT Subject: Re: git does the wrong thing with ambiguous names Message-ID: <46688BDC.6000506@nrlssc.navy.mil> Didn't hit reply-all... Brandon Casey wrote: > Alex Riesen wrote: >> Alex Riesen, Thu, Jun 07, 2007 01:33:27 +0200: >>> Alex Riesen, Thu, Jun 07, 2007 00:58:26 +0200: >>>> Brandon Casey, Thu, Jun 07, 2007 00:13:48 +0200: > [snip] >> This one is much shorter and less friendly. Suggested by Junio on irc. >> It makes checkout always prefer a branch. >> >> diff --git a/git-checkout.sh b/git-checkout.sh >> index 6b6facf..282c84f 100755 >> --- a/git-checkout.sh >> +++ b/git-checkout.sh >> @@ -67,6 +67,8 @@ while [ "$#" != "0" ]; do >> new_name="$arg" >> if git-show-ref --verify --quiet -- "refs/heads/$arg" >> then >> + rev=$(git-rev-parse --verify "refs/heads/$arg^0" >> 2>/dev/null) >> + new="$rev" >> branch="$arg" >> fi >> elif rev=$(git-rev-parse --verify "$arg^{tree}" 2>/dev/null) >> > > This doesn't work. sorry, scratch that. It does work. Thunderbird turned $arg _hat_ 0 into $arg _superscript_ 0, which became $arg0 when I copy/pasted. And I didn't catch it. Again, apologies. I think this is the intuitive behavior, prefer branch over tag. though I think a warning or refusal to switch would be better (but more complicated, and I don't know how to do it). A quick run through of some other porcelain commands shows they prefer tag: git log git show git diff -brandon