
What if multiple lines with different revisions use the same tag name in. hgtags-file to be append only and be carefully merged.ĥ. Note that this multiple-head tag collision resolution algorithm depends on the. In the above diagram tag_b revers to revision 10, although revision 13 is not tip. However if a tag was defined in a common ancestor of both heads, but changed in just one head, the changed one wins over the unchanged one. Note that the numeric revision number depends on the sequence by which changes got pulled into a repository and may therefore vary even on repositories containing the same changesets. In the above diagram tag_a refers to revision 2, since revision 14 is higher than revision 13. the one with the higher numeric revision number) wins. If two definitions/changes of tags seem unrelated like in the following diagram, the " tipmost" (e.g. There is no general "correct" solution to this problem.

A difficult case arises, if the same tag specifies two different revisions in two different heads. The tags that are in effect at any given time are the tags specified in each head. In case of a merge conflict on your tags, the safest option is to take both sides.Ĥ.1. hgtags files are merged just like any other file, which can result in file conflicts, even though the resolution is clear. hgtags in different heads, it does not use that knowledge when attempting to merge.
#Tortoisehg personal tag how to
While Mercurial knows how to handle different. Why? How should I merge them?ĭifferent sets of tags, coming from different branches and heads, can lead to a merge conflict.

My tags had a conflict when I was merging. hgtags and the tags stored there are handled the same.Ĥ. The format of this file is identical to the one of. hg/localtags, which will not be distributed or versioned. You can use "hg tag" command with an option -l or -local.
#Tortoisehg personal tag update
Updating a working dir to a particular tag will take that directory back to a point before the tag itself existed.Ĭloning a repo to a particular tag will give you a new repo that does not have that tag.Ĭommon wisdom says that to avoid the confusion of a disappearing tag, you should clone the entire repo and then update the working directory to the tag. The changeset that a tag refers to is always older than the changeset that commits the tag itself.The fact that tags identify changesets and are also parts of changesets has some potentially confusing implications: Thus, as above, the only changesets that can be tagged are ones already committed. Thus tagging a revision must be done as a second step. Note that because tags refer to changeset IDs and the changeset ID is effectively the sum of all the contents of the repository for that change, it is impossible in Mercurial to simultaneously commit and add a tag for the changeset being committed. The hg tag command will do this for you and hg tags will show the currently effective tags. To add a tag to the system, simply add a line to this file and then commit it for it to take effect. hgtags and consists of a list of changeset IDs and their corresponding tags.


Thus Mercurial stores tags as a file in the working dir.
