Re: BUG: check-ref-format and rev-parse can not handle branches with an @ in their name combined with @{u}
- From
Jeff King <peff@peff.net>
- Date
- Jan 15, 2014, 05:00 UTC
- Message-ID
- <20140115050003.GA27237@sigill.intra.peff.net>
- In-Reply-To
- <xmqqvbxm2kmg.fsf@gitster.dls.corp.google.com>
On Tue, Jan 14, 2014 at 03:45:27PM -0800, Junio C Hamano wrote:
Show 15 quoted lines
> > Yet 'git check-ref-format --branch @mybranch@{u}'
> > claims @mybranch is an invalid branch name.
>
> I do not think it claims any such thing.
>
> $ git check-ref-format --branch @foo@{u}; echo $?
> fatal: '@foo@{u}' is not a valid branch name
> 128
> $ git check-ref-format --branch @foo; echo $?
> @foo
> 0
>
> The former asks "Is the string '@foo@{u}' a suitable name to give a
> branch?" and the answer is no. The latter asks the same question
> about the string '@foo', and the answer is yes.Is that what "--branch" does? I have never used it, but the manpage seems to suggest it is about _parsing_ (which, IMHO, means it probably should have been an option to rev-parse, but that is another issue altogether).
So a more interesting output than the above is: $ git checkout -t -b @mybranch origin/master Branch @mybranch set up to track remote branch master from origin. Switched to a new branch '@mybranch'
$ git check-ref-format --branch @mybranch@{u}; echo $?
fatal: '@mybranch@{u}' is not a valid branch name
128 $ git check-ref-format --branch HEAD@{u}; echo $?
origin/master
0So "check-ref-format --branch" does understand @{u} syntax. But it doesn't like @mybranch@{u}. You can see the same problem with rev-parse:
$ git rev-parse --symbolic-full-name HEAD@{u}
refs/remotes/origin/master
$ git rev-parse --symbolic-full-name @mybranch@{u}
@mybranch@{u}
fatal: ambiguous argument '@mybranch@{u}': unknown revision or path
not in the working tree.So I do think there is a bug. The interpret_branch_name parser somehow gets confused by the "@" in the name.
-Peff