Re: [PATCH] describe: output tag's ref instead of embedded name
- From
Matheus Tavares <matheus.bernardino@usp.br>
- Date
- Feb 21, 2020, 01:33 UTC
- Message-ID
- <20200221013357.26795-1-matheus.bernardino@usp.br>
- In-Reply-To
- <xmqqftf49862.fsf@gitster-ct.c.googlers.com>
On Thu, Feb 20, 2020 at 7:59 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 8 quoted lines
> > Matheus Tavares Bernardino <matheus.bernardino@usp.br> writes: > > > I now this is just an illustration, but shouldn't this example be "git > > describe --contains v1.0-bob~1"? > > No, none of the patches discussed in this thread would not affect > anything in --contains (as it is a completely different program).
Ok, thanks for the clarification.
Show 5 quoted lines
> > Another case that came to my mind is when the user runs `git describe > > --abrev=0 HEAD` and v1.0-bob points to HEAD~. In this case, v1.0 will > > be displayed without suffix,... > > In this case, v1.0-1- is followed by the full object name, I think.
I might be doing something wrong, but this is how I tried to test this: First I set the desired scenario with:
$ git tag -am "" v1.0 HEAD~ $ mv .git/refs/tags/v1.0 .git/refs/tags/v1.0-bob
Then, running git-describe on v1.0-bob^0 I got what we want, which is the forced long output (even with --abbrev=0):
$ git describe --abbrev=0 HEAD~ warning: tag 'v1.0-bob' is externally known as 'v1.0' v1.0-0-g310a1f27be54ecf16fd36ff987304c1a2f8524b5
But running on the commit after v1.0-bob^0, I got:
$ git describe --abbrev=0 HEAD warning: tag 'v1.0-bob' is externally known as 'v1.0' v1.0
Then we cannot directly use the output. I think we can fix this forcing the long output for this case as well, which can be done with:
diff --git a/builtin/describe.c b/builtin/describe.c index 5e8484f654..f71bddff4a 100644 --- a/builtin/describe.c +++ b/builtin/describe.c @@ -452,7 +452,7 @@ static void describe_commit(struct object_id *oid, struct strbuf *dst) } append_name(all_matches[0].name, dst); - if (abbrev) + if (all_matches[0].name->misnamed || abbrev) append_suffix(all_matches[0].depth, &cmit->object.oid, dst); if (suffix) strbuf_addstr(dst, suffix);