From: Matthias Andree Date: Thu, 14 May 2009 12:51:20 GMT Subject: Re: git-tag bug? confusing git fast-export with double tag objects Message-ID: In-Reply-To: <81b0412b0905140516k4bc84606scb71981936966caf@mail.gmail.com> Am 14.05.2009, 14:16 Uhr, schrieb Alex Riesen : > 2009/5/14 Matthias Andree : >> Am 14.05.2009, 05:18 Uhr, schrieb Junio C Hamano : >>> No.  You can tag any object, and a tag is an object.  You can point a >>> signed tag with your own signed tag to attest your own belief on that >>> other guy's tag, be it "it's genuine", "the tagged commit suits my >>> need", >>> etc. >> >> OK, so I can tag/sign any object, fine. >> >> HOWEVER, I see two problems here (yes, they are corner cases): >> >> #1: git tag -f ("replace tag") fails to "replace" a heaviweight tag if >> I try >> to replace a tag by itself (or create a cycle by some other means). > > It is not a "cycle" ("loop"?) The tags information is the SHA1, not > the tag's name. > >> The new "foo" is unique in refs (OK), but it's *not unique* in objects >> (FAIL), as the old "foo" is referenced by the new "foo" and bears the >> same >> tag name. > > Of course it is unique. Look at tag's SHA1. Hi Alex, I'm sorry to say this is irrelevant. Please read my earlier message again, and completely this time - you appear to have missed crucial parts, as your next paragraph suggests: >> #2: related: git tag -d cannot reliably delete tag objects >> >> Same here: if another tag object references the tag object I'm >> deleting, we >> only delete the ref, but not the tag object. It doesn't (cannot) become >> dangling. > > As soon as an object is not referenced anymore by any reference > (including references from refs/tags/), reference log or index it will > be removed by > garbage collection (gc, prune) at the next opportunity. Irrelevant, because your assumption "not referenced anymore" is false. This was clearly written in my earlier message, which please see. -- Matthias Andree