Hello.
Jakub Narębski <jnareb@gmail.com> wrote:
|W dniu 20.09.2016 o 20:54, Bryan Turner pisze:
|> On Tue, Sep 20, 2016 at 9:23 AM, Steffen Nurpmeso <steffen@sdaoden.eu> \
|> wrote:
|>> 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!
Ok. I went the road Bryan suggested, i had only forgotten this. Yes, it caused mysterious bugs once rev-parse reversed the output, but i didn't understand the order at first, anyway. With todays' ever-rotating distributions i don't even try to keep up; currently unthinkable to use the same release of an OS for five years, like FreeBSD 5.3. Well.
...
|>> 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"?
...
|This does not work for detached HEAD, but perhaps you don't need
|to worry about this.
No, not for me: it will only switch in between two different stable/ which exist. But thanks, just give it to me!
| $ git rev-parse --symbolic-full-name HEAD
| refs/heads/master
This is a really good suggestion, which i will remember. I didn't know this at all yet:
$ git rev-parse --symbolic-full-name --abbrev-ref=strict HEAD
Seems to do exactly what i want, non-fragile, then.
...
|But
...
| 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
And name-rev gives "HEAD master~2" in a test of mine, or only "master~2", or "undefined" if i use --tags, for completeness sake.
Thanks, Jakub. I'm using the plumbing.
--steffen