[PATCH] convert: make tags children of the nodes they tag

Brendan Cully brendan at kublai.com
Wed Jul 11 10:51:30 CDT 2007


On Wednesday, 11 July 2007 at 09:47, Edouard Gomez < wrote:
> > One regression is that deleted tags are not discovered when convert is
> > run incrementally. This could be fixed in a second changeset if
> > desired.
> 
> It's even worse.
> 
> The only problem with this approach is that 2 conversions of the same repo at
> different times will result in two different mercurial repos where tag nodes
> have been deleted, because the following commit nodes have a different id.
> 
> The only solution i see to solve this, is when deleting tag nodes (that can be
> found because they are duplicates according to their source ids), we must do:
>  - bundle the children nodes
>  - strip from the tag node
>  - reapply each changeset on top of the new parent node (tag node's parent)
> 
> This means that removing a tag can be quite heavy operation.

this isn't really feasible. You can't unbundle on top of a missing node.

> Do you see another solution if we want to keep the conversion process a stable
> process in time ?

use this code, which doesn't delete tags ;)

using the -r option to convert in fixed increments might also
help. Or we can try to convert tags to commit-like objects, so that we
can use the actual time when a tag is removed for systems that provide
that information, like SVN.


More information about the Mercurial-devel mailing list