Есть ли в Mercurial механизм правил тегов? Я хочу применить имя тега. Например. тег ВЕРСИЯ 2.4... Я хочу, чтобы "ВЕРСИЯ" обязательно присутствовала в имени тега, несмотря ни на что?
Спасибо.
Есть ли в Mercurial механизм правил тегов? Я хочу применить имя тега. Например. тег ВЕРСИЯ 2.4... Я хочу, чтобы "ВЕРСИЯ" обязательно присутствовала в имени тега, несмотря ни на что?
Спасибо.
У вас есть хук pretag
, на который вы можете добавить некоторую проверку. У вас есть некоторая информация об этом потоке: Mercurial hook для установки политики для имен тегов
.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
У вас есть несколько примеров хуков здесь: https://www.mercurial-scm.org/wiki/HookExamples
Вы также можете применить эти правила в процессе управления выпуском, т. е. предоставить сценарии сборки, в которых версия принимается в качестве входных данных, проверяется, а затем VERSION добавляется к имени конечного тега. Это не ограничивало бы людей от прямого тегирования недопустимым именем, но обычно автоматизированный процесс выпуска/сборки экономит столько времени и ошибок, что никто не хочет возвращаться к ручному процессу.
В идеале все это должно быть централизовано на вашем CI-сервере, поэтому вы не полагаетесь на пользовательские хуки, которые необходимо устанавливать в каждой установке Mercurial.