mercurial/commands.py
changeset 13136 6320101a638c
parent 13072 8c6b7a5f38c4
parent 13135 1c1ca9d393f4
child 13191 1aea66b71f4f
equal deleted inserted replaced
13132:24e3349cba8e 13136:6320101a638c
  3663 
  3663 
  3664     Name a particular revision using <name>.
  3664     Name a particular revision using <name>.
  3665 
  3665 
  3666     Tags are used to name particular revisions of the repository and are
  3666     Tags are used to name particular revisions of the repository and are
  3667     very useful to compare different revisions, to go back to significant
  3667     very useful to compare different revisions, to go back to significant
  3668     earlier versions or to mark branch points as releases, etc.
  3668     earlier versions or to mark branch points as releases, etc. Changing
       
  3669     an existing tag is normally disallowed; use -f/--force to override.
  3669 
  3670 
  3670     If no revision is given, the parent of the working directory is
  3671     If no revision is given, the parent of the working directory is
  3671     used, or tip if no revision is checked out.
  3672     used, or tip if no revision is checked out.
  3672 
  3673 
  3673     To facilitate version control, distribution, and merging of tags,
  3674     To facilitate version control, distribution, and merging of tags,
  3674     they are stored as a file named ".hgtags" which is managed
  3675     they are stored as a file named ".hgtags" which is managed similarly
  3675     similarly to other project files and can be hand-edited if
  3676     to other project files and can be hand-edited if necessary. This
  3676     necessary. The file '.hg/localtags' is used for local tags (not
  3677     also means that tagging creates a new commit. The file
  3677     shared among repositories).
  3678     ".hg/localtags" is used for local tags (not shared among
       
  3679     repositories).
       
  3680 
       
  3681     Tag commits are usually made at the head of a branch. If the parent
       
  3682     of the working directory is not a branch head, :hg:`tag` aborts; use
       
  3683     -f/--force to force the tag commit to be based on a non-head
       
  3684     changeset.
  3678 
  3685 
  3679     See :hg:`help dates` for a list of formats valid for -d/--date.
  3686     See :hg:`help dates` for a list of formats valid for -d/--date.
  3680 
  3687 
  3681     Since tag names have priority over branch names during revision
  3688     Since tag names have priority over branch names during revision
  3682     lookup, using an existing branch name as a tag name is discouraged.
  3689     lookup, using an existing branch name as a tag name is discouraged.
  3715     elif not opts.get('force'):
  3722     elif not opts.get('force'):
  3716         for n in names:
  3723         for n in names:
  3717             if n in repo.tags():
  3724             if n in repo.tags():
  3718                 raise util.Abort(_('tag \'%s\' already exists '
  3725                 raise util.Abort(_('tag \'%s\' already exists '
  3719                                    '(use -f to force)') % n)
  3726                                    '(use -f to force)') % n)
  3720     if not rev_ and repo.dirstate.parents()[1] != nullid:
  3727     if not opts.get('local'):
  3721         raise util.Abort(_('uncommitted merge - please provide a '
  3728         p1, p2 = repo.dirstate.parents()
  3722                            'specific revision'))
  3729         if p2 != nullid:
       
  3730             raise util.Abort(_('uncommitted merge'))
       
  3731         bheads = repo.branchheads()
       
  3732         if not opts.get('force') and bheads and p1 not in bheads:
       
  3733             raise util.Abort(_('not at a branch head (use -f to force)'))
  3723     r = cmdutil.revsingle(repo, rev_).node()
  3734     r = cmdutil.revsingle(repo, rev_).node()
  3724 
  3735 
  3725     if not message:
  3736     if not message:
  3726         # we don't translate commit messages
  3737         # we don't translate commit messages
  3727         message = ('Added tag %s for changeset %s' %
  3738         message = ('Added tag %s for changeset %s' %
  4479            _('list the changed files of a revision'), _('REV')),
  4490            _('list the changed files of a revision'), _('REV')),
  4480          ] + walkopts + subrepoopts,
  4491          ] + walkopts + subrepoopts,
  4481          _('[OPTION]... [FILE]...')),
  4492          _('[OPTION]... [FILE]...')),
  4482     "tag":
  4493     "tag":
  4483         (tag,
  4494         (tag,
  4484          [('f', 'force', None, _('replace existing tag')),
  4495          [('f', 'force', None, _('force tag')),
  4485           ('l', 'local', None, _('make the tag local')),
  4496           ('l', 'local', None, _('make the tag local')),
  4486           ('r', 'rev', '',
  4497           ('r', 'rev', '',
  4487            _('revision to tag'), _('REV')),
  4498            _('revision to tag'), _('REV')),
  4488           ('', 'remove', None, _('remove a tag')),
  4499           ('', 'remove', None, _('remove a tag')),
  4489           # -l/--local is already there, commitopts cannot be used
  4500           # -l/--local is already there, commitopts cannot be used