Re: git-rev-parse --symbolic-abbrev-name
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 6, 2009, 08:18 UTC
- Message-ID
- <7vocykkftg.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <1a69a9d80901041223r1f3d2956ne05996793bb23e97@mail.gmail.com>
"Arnaud Lacombe" <lacombar@gmail.com> writes:
> You'll find hereafter two patches which implements this in > git-symbolic-ref and git-rev-parse. Feel free to choose the one you > find the best. If you choose to integrate one of these, tells me and > I'll do a proper documentation bits and patch submission.
Show 12 quoted lines
> diff --git a/builtin-rev-parse.c b/builtin-rev-parse.c > index 81d5a6f..70f4a33 100644 > --- a/builtin-rev-parse.c > +++ b/builtin-rev-parse.c > @@ -24,6 +24,7 @@ static int show_type = NORMAL; > > #define SHOW_SYMBOLIC_ASIS 1 > #define SHOW_SYMBOLIC_FULL 2 > +#define SHOW_SYMBOLIC_SHORT 3 > static int symbolic; > static int abbrev; > static int output_sq;
I think --symbolic-short makes the most sense.
Show 10 quoted lines
> @@ -125,13 +129,20 @@ static void show_rev(int type, const unsigned char *sha1, const char *name)
> */
> break;
> case 1: /* happy */
> + if (symbolic == SHOW_SYMBOLIC_SHORT) {
> + char *p;
> + p = strrchr(full, (int)'/');
> + if (p != NULL)
> + full = p + 1;
> + }However, this is not a good way to do it, I suspect. This patch most likely will be queued to the al/symbolic-short topic branch, but you are losing information here. You'd probably want to try substings from the tail of the full name (e.g. symbolic-short, al/symbolic-short, heads/al/symbolic-short, and finally refs/heads/al/symbolic-short) and feed them to dwim_ref() and pick the shortest one that yields the same ref unambiguously, or something like that.
By the way, I do not see why you need to cast '/'.