Jeff King <peff@xxxxxxxx> writes: >> > gcc (master) $ git describe --tags --abbrev=0 >> > warning: tag 'gcc_9_2_0_release' is really 'releases/gcc-9.2.0' here >> > gcc_9_2_0_release >> > >> > It took me a while to find out what the warning means, because >> > 'gcc_9_2_0_release' is not in $(git tag -l), and it cannot be used as a >> > ref either: >> [...] >> It seems that the commit which added the output message you got is >> 212945d ("Teach git-describe to verify annotated tag names before >> output", 2008-02-28) [1]. As the commit message states, the warning is >> emitted when a tag is locally stored under a different name from the >> one it was originally created (being the former the one you will want >> to use at `git show`). > > Yeah, I think that is what's going on with that warning, but there's a > weird thing about the actual stdout output. We see a tag object whose > name doesn't match the ref. What's the "real" name of that tag? Is it > the name in the object, and the ref is wrong? Or is the ref correct, and > the object is wrong? > > You could get pretty philosophical there, I think, but it seems slightly > annoying that we print the name from the object to stdout, when one > cannot then use that name to access the tag in any way. > > I.e., I think it might be reasonable to issue that warning but then > print "releases/gcc-9.2.0" instead. I agree. What the tag creator, whom you treat as more authoritative than yourself, called "gcc_9_2_0_release", is stored at a wrong place by you and you have to call it "releases/gcc-9.2.0". So the right way (at least philosophically) to phrase the warning message should reflect that a bit better, perhaps warning: tag 'releases/gcc-9.2.0' is externally known as 'gcc_9_2_0_release' releases/gcc-9.2.0 to hint that 'releases/gcc-9.2.0' is merely how you name it and the real name of the tag itself is gcc_9_2_0_release, although in practice everybody would be calling the tag with the same wrong name, as that is how cloning and fetching of tags work ;-).