Thread (5 messages) flat view 5 messages, 3 authors, 2016-09-21

Re: v2.9.3 and v2.10.0: `name-ref' HEAD gives wrong branch name

From: Jakub Narębski <hidden>
Date: 2016-09-21 13:43:40

W dniu 20.09.2016 o 20:54, Bryan Turner pisze:
On Tue, Sep 20, 2016 at 9:23 AM, Steffen Nurpmeso [off-list ref] wrote:
quoted
Hello again,

yah, sorry, i'm back again..
I try to find a way to find the name of the current branch in an
automated way, because i need to ensure that a commit happens on
it and no other branch.  Now the problem arises that the commit
ref at the time of that commit maybe shared in between several
different branches, but no more thereafter, of course:

  ?0[steffen@wales ]$ git branch|grep '^*'
  * stable/v14.9
Not good, 'git branch' is a porcelain (user facing) command, so it
output may change; e.g. '*' could be replaced with '•'. For example
output for detached HEAD had changed!
quoted
  ?0[steffen@wales ]$ git name-rev --name-only HEAD
  stable/v14.8

Is there another way except looking into .git/HEAD or using sed(1)
on the output of `branch' to find the right name?
Have you tried "git symbolic-ref HEAD"?

$ git symbolic-ref HEAD
refs/heads/master

If you don't want the fully-qualified ref, you can add --short:

$ git symbolic-ref --short HEAD
master
This does not work for detached HEAD, but perhaps you don't need
to worry about this.

  $ git rev-parse --symbolic-full-name HEAD
  refs/heads/master

But

  $ git checkout HEAD^0
  Note: checking out 'HEAD^0'.

  You are in 'detached HEAD' state. [...]
 
  $ git rev-parse --symbolic-full-name HEAD
  HEAD

  $ git symbolic-ref HEAD
  fatal: ref HEAD is not a symbolic ref

  $ git branch
  * (HEAD detached at 3e2ebf9)
    master

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