diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py index ef0972c237..94d956352c 100644 --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -650,35 +650,8 @@ class localrepository(object): return hook.hook(self.ui, self, name, throw, **args) def tag(self, 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(self.root, '', ['.hgtags']) - if any(self.status(match=m, unknown=True, ignored=True)): - raise error.Abort(_('working copy of .hgtags is changed'), - hint=_('please commit .hgtags manually')) - - self.tags() # instantiate the cache - tagsmod._tag(self.unfiltered(), names, node, message, local, user, date, - editor=editor) + tagsmod.tag(self, names, node, message, local, user, date, + editor=editor) @filteredpropertycache def _tagscache(self): diff --git a/mercurial/tags.py b/mercurial/tags.py index 8a8158c21a..0c99eabab2 100644 --- a/mercurial/tags.py +++ b/mercurial/tags.py @@ -395,6 +395,37 @@ def _writetagcache(ui, repo, valid, cachetags): 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):