开发者

How can one change the name of a tag?

开发者 https://www.devze.com 2023-04-07 17:28 出处:网络
I have mad开发者_运维知识库e a tag in mercurial: hg tag release_123 Later on I found out that the name was wrong, it should be release_124. Is it possible to simply rename the tag or do I have to cre

I have mad开发者_运维知识库e a tag in mercurial:

hg tag release_123

Later on I found out that the name was wrong, it should be release_124. Is it possible to simply rename the tag or do I have to create a new one?


I would do it by removing the tag and then adding a new tag with the new name

The Mercurial tag wiki explains how to remove a tag:

How do I remove a tag?

Either by

  • hg tag --remove tagname

(this being the nearest equivalent to cvs tag -d)

  • adding tagname 0000000000000000000000000000000000000000 to the end of .hgtags

  • removing all references to tagname in .hgtags (but this might confuse the multiple-head tag collision resolution algorithm)


You should be able to edit regular tags in the .hgtags file (and commit it)

A "regular" tag (with no special specifier) is revision controlled, does propagate with other changes, and lives in the .hgtags file in a repository.

This old thread mentions you need to do this in all HEADS of a repo though.


Like what @matt-ellen has said, but in reverse. Because I like to be sure the revision is tagged properly before I delete the old tag.

Here I create an example of a repo with 4 revisions.

  1. View the log
  2. View the tags (none, and tip)
  3. Create a tag at revision #2 (using the hash)
  4. View tags (now there is one, and tip)
  5. Create new tag name
  6. View tags (now there are two, and tip)
  7. Remove bad tag name
  8. View tags (now there is one, and tip)

Example:

$ hg log

changeset:   3:271cb2836c23
user:        user <you@example.com>
date:        Sat Mar 01 13:49:55 2014 -0600
summary:     Very important things.

changeset:   2:3c953ee62faf
user:        user <you@example.com>
date:        Wed Feb 26 00:17:55 2014 -0600
summary:     Did some changes.

changeset:   1:54e2275eed1e
user:        user <you@example.com>
date:        Tue Feb 25 01:34:31 2014 -0600
summary:     So, lots of things here.

changeset:   0:3f3e1aee4e14
user:        user <you@example.com>
date:        Sat Feb 22 00:42:29 2014 -0600
summary:     Inital project checkin.

$ hg tags
tip          3:271cb2836c23

$ hg tag -r 3c953ee62faf release_123
$ hg tags
tip           3:271cb2836c23
release_123   2:3c953ee62faf

$ hg tag -r 3c953ee62faf release_124
$ hg tags
tip           3:271cb2836c23
release_123   2:3c953ee62faf
release_124   2:3c953ee62faf

$ hg tag --remove release_123
$ hg tags
tip           3:271cb2836c23
release_124   2:3c953ee62faf


I've been looking for a solution to same issue: I found this command which creates another tag with copied from the previous one with a new name. But it does not remove the old one. It has to be deleted manually.

Rename a tag :

hg tag -f -r

To delete the old tag:

hg tag --remove


If you are using TortoiseHg, its pretty simple:

case#1 if it's a local tag: right click a tagged change-set|tag...|Select tag |Options |Replace existing tag | Done < local tag will disappear>

case#2 if its global tag: right click a tagged change-set|tag...| Select tag| Options | Replace existing tag | Remove Now select change-set and create new tag (its like a renamed tag). Not in one click though :-)

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号