Я пишу (в процессе) ловушку, чтобы предотвратить локальное добавление имени тега BAD:
.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
Как сделать эту проверку для pretxnchangegroup hook?
Я пытаюсь написать этот код:
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
но когда я (нажимаю на репо с включенной верхней pretxnchangegroup hook:
$ 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
вы можете видеть, что rev.tags () не возвращает тег gg !