I write (in-process) hook to prevent add BAD tag name locally:
.hg/hgrc:
pretag.badtagname = python:.hg/hgcheck.py:localbadtag
.hg/hgcheck.py:
goodtag_re = r'(ver-\d+\.\d+\.\d+|tip)$' def localbadtag(ui, repo, hooktype, node, **kwargs): assert(hooktype == 'pretag') re_ = re.compile(goodtag_re) if not re_.match(tag): ui.warn('Invalid tag name "%s".\n' % tag) ui.warn('Use one of tip, ver-xx.xx.xx\n') return True return False
How make this check for pretxnchangegroup hook?
I try write this code:
def pushbadtag(ui, repo, hooktype, node, **kwargs): assert(hooktype == 'pretxnchangegroup') re_ = re.compile(goodtag_re) for rev in xrange(repo[node].rev(), len(repo)): ui.warn('rev: %d\n' % rev) for tag in repo[rev].tags(): ui.warn('tag: ' + tag + '\n') if not re_.match(tag): ui.warn('Invalid tag name "%s" for rev: "%s".\n' % (tag, rev)) ui.warn('Use one of tip, ver-xx.xx.xx\n') return True return False
but when I (push to repo with upper pretxnchangegroup hook enabled:
$ hg tag gg $ hg push -f pushing to /cygdrive/d/home/tmp/hg/good searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) rev: 35 tag: tip
you can see that rev.tags() do not return gg tag!