git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git does the wrong thing with ambiguous names

From
Brandon Casey <casey@nrlssc.navy.mil>
Date
Jun 7, 2007, 14:54 UTC
Message-ID
<46681C36.4060305@nrlssc.navy.mil>
In-Reply-To
<20070606233327.GD3969@steel.home>
Alex Riesen wrote:
Show 22 quoted lines
> Alex Riesen, Thu, Jun 07, 2007 00:58:26 +0200:
>> Brandon Casey, Thu, Jun 07, 2007 00:13:48 +0200:
>>> When a branch and tag have the same name, a git-checkout using that name 
>>> succeeds (exits zero without complaining), switches to the _branch_, but 
>>> updates the working directory contents to that specified by the _tag_. 
>>> git-status show modified files.
>> Bad. To reproduce:
>>
>> mkdir a && cd a && git init && :> a && git add . && git commit -m1 &&
>> :>b && git add . && git commit -m2 && git tag master HEAD^ &&
>> find .git/refs/ && gco -b new && gco master && git status
>>
> 
> git-rev-parse actually warns about ambguities:
> 
>     $ git-rev-parse --verify master
>     warning: refname 'master' is ambiguous.
>     dd5cdc387f2160bf04d02ac08dfdaf952f769357
> 
> It's just that the warning is thrown away in git-checkout.sh
> 
> A quick and _very_ messy fix could like like that:
[snip patch]

This one suffers from what Junio described previously on the mailing list, when get_sha1_basic() fails, get_sha1_1() continues trying alternatives. The risk is that one of those alternatives could match, for example if the ambiguous branch and tag name is 'dead'.

-brandon
Previous: Brandon Casey
Message 6 of 6 in “git does the wrong thing with ambiguous names”
  1. Brandon CaseyJun 6, 2007
  2. Alex RiesenJun 6, 2007
  3. Alex RiesenJun 6, 2007
  4. Alex RiesenJun 7, 2007
  5. Brandon CaseyJun 7, 2007
  6. Brandon CaseyJun 7, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.