diff mercurial/tags.py @ 31674:a719f3315366

tags: move 'repo.tag' in the 'tags' module Similar logic, pretty much nobody use this method (that creates a tag) so we move it into the 'tags' module were it belong.
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
date Mon, 27 Mar 2017 15:58:31 +0200
parents 7d0459706716
children 5eb4d206202b
line wrap: on
line diff
--- a/mercurial/tags.py	Mon Mar 27 15:55:07 2017 +0200
+++ b/mercurial/tags.py	Mon Mar 27 15:58:31 2017 +0200
@@ -395,6 +395,37 @@
     except (OSError, IOError):
         pass
 
+def tag(repo, names, node, message, local, user, date, editor=False):
+    '''tag a revision with one or more symbolic names.
+
+    names is a list of strings or, when adding a single tag, names may be a
+    string.
+
+    if local is True, the tags are stored in a per-repository file.
+    otherwise, they are stored in the .hgtags file, and a new
+    changeset is committed with the change.
+
+    keyword arguments:
+
+    local: whether to store tags in non-version-controlled file
+    (default False)
+
+    message: commit message to use if committing
+
+    user: name of user to use if committing
+
+    date: date tuple to use if committing'''
+
+    if not local:
+        m = matchmod.exact(repo.root, '', ['.hgtags'])
+        if any(repo.status(match=m, unknown=True, ignored=True)):
+            raise error.Abort(_('working copy of .hgtags is changed'),
+                             hint=_('please commit .hgtags manually'))
+
+    repo.tags() # instantiate the cache
+    _tag(repo.unfiltered(), names, node, message, local, user, date,
+         editor=editor)
+
 def _tag(repo, names, node, message, local, user, date, extra=None,
          editor=False):
     if isinstance(names, str):