git/list[1] front-page[2] threads[3] people[4] search[5] about
 

git-rev-parse --symbolic-abbrev-name [was Re: git-branch --print-current]

From
KCKarl Chen <quarl@cs.berkeley.edu>
Date
Jan 4, 2009, 12:34 UTC
Message-ID
<quack.20090104T0434.lthfxjz1c8x_-_@roar.cs.berkeley.edu>
In-Reply-To
<7vzli73b1g.fsf@gitster.siamese.dyndns.org>
>>>>> On 2009-01-03 21:17 PST, Junio C Hamano writes:
    Junio> That is a good point about user education, and is a
    Junio> demonstration why a new option to cover a very
    Junio> narrow-special case to symbolic-ref will not help the
    Junio> situation.  People will add their own embellishments
    Junio> around the name of the branch anyway, and the most
    Junio> generic symbolic-ref output is just as useful as a
    Junio> special case option to show without refs/heads/.

That's arguable :) you really think "branchfoo" instead of "refs/heads/branchfoo" is a narrow special case? Seems like a common case for everyone except plumbing tools.

Here's a more general idea you might like better:
    git symbolic-ref --abbrev BLAH
or even
    git rev-parse --symbolic-abbrev-name BLAH

This would be like git-rev-parse --symbolic-full-name, but strips the "refs/x/" iff the result is unambiguous. Since it's much more work for a script to check whether the stripped version is ambiguous, this functionality is appropriate as a builtin option.

(Hmm, I guess to be able to specify a ref it has to already be unambiguous, so the main use that --symbolic doesn't already cover is for symbolic refs such as HEAD.)

    Junio> What you quoted are all inferior implementations of
    Junio> showing the name of the current branch in the bash
    Junio> prompt.

Yup, that was the point - it's so ugly seeing all these things floating around, but that's where things stand right now.

    Junio> ... __git_ps1 shell function is defined to be used for
    Junio> this exact purpose and is documented in the completion
    Junio> script.

Thanks for the detailed explanation. I actually use zsh rather than of bash and I did already find git-completion.bash. But obviously all those people posting on blogs don't know about it :)

Previous: Junio C HamanoNext: demerphq
Message 7 of 28 in “git-branch --print-current”
  1. Karl ChenJan 2, 2009
  2. David AguilarJan 2, 2009
  3. Karl ChenJan 4, 2009
  4. Miklos VajnaJan 4, 2009
  5. Karl ChenJan 4, 2009
  6. Junio C HamanoJan 4, 2009
  7. git-rev-parse --symbolic-abbrev-name [was Re: git-branch --print-current]Karl Chen, Jan 4, 2009
  8. demerphqJan 4, 2009
  9. Junio C HamanoJan 4, 2009
  10. Arnaud LacombeJan 4, 2009
  11. Miklos VajnaJan 4, 2009
  12. Arnaud LacombeJan 5, 2009
  13. Miklos VajnaJan 5, 2009
  14. Junio C HamanoJan 6, 2009
  15. Arnaud LacombeJan 7, 2009
  16. demerphqJan 4, 2009
  17. Junio C HamanoJan 5, 2009
  18. Shawn O. PearceJan 5, 2009
  19. Junio C HamanoJan 5, 2009
  20. Jeff KingJan 5, 2009
  21. Arnaud LacombeJan 4, 2009
  22. Karl ChenJan 4, 2009
  23. demerphqJan 4, 2009
  24. Arnaud LacombeJan 4, 2009
  25. Adeodato SimóJan 4, 2009
  26. Jakub NarebskiJan 4, 2009
  27. Alexandre DulaunoyJan 4, 2009
  28. demerphqJan 4, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.