Deleting a tag from a bound branch

Max Bowsher _ at maxb.eu
Sun Nov 13 21:22:17 UTC 2011


On 13/11/11 20:49, John Yates wrote:
> Matthew D. Fuller wrote on 11/13/2011 02:58:49 PM:
> 
>> Same problem on the other side of the mountain; it leaves you no way
>> to make a tag with a name previously deleted.
>>
>> There's really no substitute for real history for any automatic action
>> other than "propagate new" (well, you could choose a different action
>> like 'deletion' to dominate, but all those choices give you
>> staggeringly worse behavior).
> 
> Imperfect as my proposal is I think that OP Eli would find it an 
> improvement over today's behavior.  The current mechanism does not handle 
> tags with divergent definitions.  Worse, even after a tag has been killed 
> it comes back.  Eli did not ask to be able to move / redefine a tag.  He 
> simply did not want it to behave as a zombie, repeatedly coming back from 
> the dead.

That the proposal would help in one very specific situation does not
recommend it in general.

Matthew has already pointed out that it causes about as many problems as
it solves.

I agree very much that's there's no substitute for real history.

Consider Mercurial's solution to this problem: a special file (called
.hgtags) in the root of every branch, containing lines of the form
"revision-id tag-name".

That turns out to be an fairly good solution, allowing sensible
versioning of tags, including deleting them.

So, why is everyone not saying that Bazaar should self-evidently do the
same?

As I see it, primarily because, since a tag can only ever be applied in
a new revision, to revisions which have gone before, if you branch from
a tag in Mercurial, you do NOT get the tag you branched from in the
newly created branch!

Whilst we're discussing other version control systems, Git has two kinds
of tags, one that closely resembles a Bazaar tag, and one that closely
resembles a Mercurial tag.

So, there's no obvious prior art for the right way to do this.

One option that might be very interesting to explore, might be to store
tag information in a way similar to how Bazaar Looms store the thread
information - in an evolving history DAG reusing Bazaar's core storage
formats.

Enacting such a change would require both a format bump and a
significant amount of UI work, but might give us the best of both worlds
- tags which track their history in a graph separate but related to the
graph of revisions, and which, by virtue of tracking that history, can
respond correctly to requests to propagate changes of all kinds.

Max.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/bazaar/attachments/20111113/b3613e4d/attachment.pgp>


More information about the bazaar mailing list