Thread (7 messages) 7 messages, 3 authors, 2017-02-27

Re: [BUG] branch renamed to 'HEAD'

From: Jeff King <hidden>
Date: 2017-02-27 08:16:04

On Mon, Feb 27, 2017 at 11:43:46AM +0530, Karthik Nayak wrote:
On Mon, Feb 27, 2017 at 10:22 AM, Luc Van Oostenryck
[off-list ref] wrote:
quoted
Hi,

I just discover something which very much seems a bug to me
while making an error in renaming a branch.
The scenario is the following:
- I have a branch named 'orig'
- I want to make some experimental changes on it:
        $ git checkout -b temp orig
        $ ... edit some files ...
        $ ... make some tests & commits ...
- I'm happy with my changes, so I want to have my original
  branch to now points to the head of this temp branch
  but did it wrongly:
        $ git branch -m -f orig @
Here you are using the '-m' flag, which is to rename a branch. So what
you're essentially
doing is:
    $ git branch -m -f orig HEAD
Do note that this won't reset 'orig' to point to 'HEAD', rather this
renames 'orig' to 'HEAD'.

What you actually want to do (to reset 'orig' to 'HEAD') is:
    $ git branch -f orig @
This would make orig point to the current HEAD.
Regardless of the original intent, I think it is wrong to convert "@" to
a branch named "HEAD". I think the bug is in strbuf_check_branch_ref(),
which blindly sticks "refs/heads/" in front of any value we get from
interpret_branch_name(), which clearly does not make sense for HEAD.

-Peff
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help