Механизм правил тегов Mercurial

Есть ли в Mercurial механизм правил тегов? Я хочу применить имя тега. Например. тег ВЕРСИЯ 2.4... Я хочу, чтобы "ВЕРСИЯ" обязательно присутствовала в имени тега, несмотря ни на что?

Спасибо.


person user3795904    schedule 02.07.2014    source источник


Ответы (1)


У вас есть хук 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.

person Mathieu Fortin    schedule 02.07.2014