# Q: git describe --always --tags .. gives "warning: tag 'tag1' is really 'tag2' here"

4 messages from 2019-05-29 to 2019-06-03. Participants: Ulrich Windl, Junio C Hamano, Jeff King.
Thread: https://gitlist.dev/t/51194

## Ulrich Windl, 2019-05-29 07:45

Subject: Q: git describe --always --tags .. gives "warning: tag 'tag1' is really 'tag2' here"
Message-ID: <5CEE38B4020000A1000317C6@gwsmtp.uni-regensburg.de>
URL: https://gitlist.dev/e/5CEE38B4020000A1000317C6%40gwsmtp.uni-regensburg.de

```
Hi!

I have a project that changed its name some time ago (from "isredir" to "iredir"), so I added another tag for the same commit ID (What's the command to show the commit IDs for tags, BTW?: "git tag -v" does not.

As part of the build process, I run (for example) "git describe --always --tags af467c7".
So I got the response:
warning: tag 'isredir-0.3.0' is really 'iredir-0.3.0' here
isredir-0.3.0-3-gaf467c7

I'm unsure what the message is actually saying: The hash cannot be resolved in a unique way?

I just see two tags remaining in refs:
> ls .git/refs/tags/
iredir-0.3.0  iredir-0.3.1

Regards,
Ulrich



```

## Junio C Hamano, 2019-05-29 18:01

Subject: Re: Q: git describe --always --tags .. gives "warning: tag 'tag1' is really 'tag2' here"
Message-ID: <xmqqd0k1ywal.fsf@gitster-ct.c.googlers.com>
URL: https://gitlist.dev/e/xmqqd0k1ywal.fsf%40gitster-ct.c.googlers.com
In-Reply-To: <5CEE38B4020000A1000317C6@gwsmtp.uni-regensburg.de>

```
"Ulrich Windl" <Ulrich.Windl@rz.uni-regensburg.de> writes:

> So I got the response:
> warning: tag 'isredir-0.3.0' is really 'iredir-0.3.0' here
> isredir-0.3.0-3-gaf467c7

I suspect that "git cat-file tag isredir-0.3.0" would begin like

	$ git cat-file tag iredir-0.3.0
	object .....
	type commit
	tag isredir-0.3.0
	tagger ...

Notice that "tag" line records the true name of that tag, which does
not match where you stored that tag in refs/tags/ hierarchy?

While trying to describe af467c7 by following its ancestry and
finding the ancestor three generations ago, the command found
refs/tags/iredir-0.3.0 and then noticed that discrepancy, which is
what the warning is about.

Imagine you have only v1.0.0 (which is with known issues) but
somebody did "cd .git/refs/tags && mv v1.0.0 v1.1.0" in an attempt
to fool you.  The fact that your 'master' is a bit ahead of the
commit that was tagged with the tag object (which is v1.0.0 but
pretending to be v1.1.0) can be seen with "describe", but the
command is careful enough to use the real version number
(i.e. v1.0.0) and not the refname (i.e. v1.1.0).





```

## Ulrich Windl, 2019-06-03 06:06

Subject: Antw: Re: Q: git describe --always --tags .. gives "warning: tag 'tag1' is really 'tag2' here"
Message-ID: <5CF4B8FE020000A100031962@gwsmtp.uni-regensburg.de>
URL: https://gitlist.dev/e/5CF4B8FE020000A100031962%40gwsmtp.uni-regensburg.de
In-Reply-To: <xmqqd0k1ywal.fsf@gitster-ct.c.googlers.com>

```
>>> Junio C Hamano <gitster@pobox.com> schrieb am 29.05.2019 um 20:01 in
Nachricht
<xmqqd0k1ywal.fsf@gitster-ct.c.googlers.com>:
> "Ulrich Windl" <Ulrich.Windl@rz.uni‑regensburg.de> writes:
> 
>> So I got the response:
>> warning: tag 'isredir‑0.3.0' is really 'iredir‑0.3.0' here
>> isredir‑0.3.0‑3‑gaf467c7
> 
> I suspect that "git cat‑file tag isredir‑0.3.0" would begin like
> 
> 	$ git cat‑file tag iredir‑0.3.0
> 	object .....
> 	type commit
> 	tag isredir‑0.3.0
> 	tagger ...
> 
> Notice that "tag" line records the true name of that tag, which does
> not match where you stored that tag in refs/tags/ hierarchy?

Hi!

Sorry for the delay (long weekend): Yes it is as you guessed. The tag is a
signed one, BTW.

> 
> While trying to describe af467c7 by following its ancestry and
> finding the ancestor three generations ago, the command found
> refs/tags/iredir‑0.3.0 and then noticed that discrepancy, which is
> what the warning is about.
> 
> Imagine you have only v1.0.0 (which is with known issues) but
> somebody did "cd .git/refs/tags && mv v1.0.0 v1.1.0" in an attempt
> to fool you.  The fact that your 'master' is a bit ahead of the
> commit that was tagged with the tag object (which is v1.0.0 but
> pretending to be v1.1.0) can be seen with "describe", but the
> command is careful enough to use the real version number
> (i.e. v1.0.0) and not the refname (i.e. v1.1.0).

Still I'm missing a verbose version of "git tag" that shows the commit IDs
along with the tag names. Unfortunately "-v" is not "--verbose" but "--verify"
(as opposed to "git remote" for example).

Regards,
Ulrich


```

## Jeff King, 2019-06-03 10:55

Subject: Re: Antw: Re: Q: git describe --always --tags .. gives "warning: tag 'tag1' is really 'tag2' here"
Message-ID: <20190603105536.GA12649@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20190603105536.GA12649%40sigill.intra.peff.net
In-Reply-To: <5CF4B8FE020000A100031962@gwsmtp.uni-regensburg.de>

```
On Mon, Jun 03, 2019 at 08:06:54AM +0200, Ulrich Windl wrote:

> > Imagine you have only v1.0.0 (which is with known issues) but
> > somebody did "cd .git/refs/tags && mv v1.0.0 v1.1.0" in an attempt
> > to fool you.  The fact that your 'master' is a bit ahead of the
> > commit that was tagged with the tag object (which is v1.0.0 but
> > pretending to be v1.1.0) can be seen with "describe", but the
> > command is careful enough to use the real version number
> > (i.e. v1.0.0) and not the refname (i.e. v1.1.0).
> 
> Still I'm missing a verbose version of "git tag" that shows the commit IDs
> along with the tag names. Unfortunately "-v" is not "--verbose" but "--verify"
> (as opposed to "git remote" for example).

You can use for-each-ref format strings with "git tag" these days. E.g.:

  git tag --list --format='%(refname:short) %(tag) %(*objecttype) %(*objectname)'

will show each tag with its refname and tag-object name (which generally
match, but would not in the case discussed here), and then the type and
oid of the pointed-to thing (the "*" is a "dereference").

-Peff

```
