git-rev-parse --symbolic-abbrev-name [was Re: git-branch --print-current]
- From
- Karl 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 BLAHThis 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 :)