Mercurial > hg > mercurial-crew-with-dirclash
changeset 4273:8185a1ca8628
tags: require -f to replace an existing tag
based on a patch from Johan Herland <johherla@online.no>
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Fri, 23 Mar 2007 00:12:28 -0500 |
parents | fe7f38dda34b |
children | f38f90a177dc 4787e2b0dd03 |
files | mercurial/commands.py tests/test-tags tests/test-tags.out |
diffstat | 3 files changed, 19 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2463,6 +2463,9 @@ def tag(ui, repo, name, rev_=None, **opt rev_ = nullid if not message: message = _('Removed tag %s') % name + elif name in repo.tags() and not opts['force']: + raise util.Abort(_('a tag named %s already exists (use -f to force)') + % name) if not rev_ and repo.dirstate.parents()[1] != nullid: raise util.Abort(_('uncommitted merge - please provide a ' 'specific revision')) @@ -2955,7 +2958,8 @@ table = { _('hg status [OPTION]... [FILE]...')), "tag": (tag, - [('l', 'local', None, _('make the tag local')), + [('f', 'force', None, _('replace existing tag')), + ('l', 'local', None, _('make the tag local')), ('m', 'message', '', _('message for tag commit log entry')), ('d', 'date', '', _('record datecode as commit date')), ('u', 'user', '', _('record user as commiter')),
--- a/tests/test-tags +++ b/tests/test-tags @@ -74,7 +74,7 @@ hg tag -d '1000000 0' bar # echo >> foo hg ci -m 'change foo 1' -d '1000000 0' # rev 2 hg up -C 1 -hg tag -r 1 -d '1000000 0' bar # rev 3 +hg tag -r 1 -d '1000000 0' -f bar # rev 3 hg up -C 1 echo >> foo hg ci -m 'change foo 2' -d '1000000 0' # rev 4 @@ -91,14 +91,17 @@ hg init t3 cd t3 echo foo > foo hg add foo -hg ci -m 'add foo' -d '1000000 0' # rev 0 -hg tag -d '1000000 0' bar # rev 1 bar -> 0 -hg tag -d '1000000 0' bar # rev 2 bar -> 1 -hg tag -d '1000000 0' -r 0 bar # rev 3 bar -> 0 -hg tag -d '1000000 0' -r 1 bar # rev 3 bar -> 1 -hg tag -d '1000000 0' -r 0 bar # rev 4 bar -> 0 +hg ci -m 'add foo' -d '1000000 0' # rev 0 +hg tag -d '1000000 0' -f bar # rev 1 bar -> 0 +hg tag -d '1000000 0' -f bar # rev 2 bar -> 1 +hg tag -d '1000000 0' -fr 0 bar # rev 3 bar -> 0 +hg tag -d '1000000 0' -fr 1 bar # rev 3 bar -> 1 +hg tag -d '1000000 0' -fr 0 bar # rev 4 bar -> 0 hg tags hg co 3 echo barbar > foo -hg ci -m 'change foo' -d '1000000 0' # rev 0 +hg ci -m 'change foo' -d '1000000 0' # rev 0 hg tags + +hg tag -d '1000000 0' -r 3 bar # should complain +hg tags \ No newline at end of file