Hello. Jakub Narębski <jna...@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 <stef...@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