Как Mercurial Hook может проверять используемые флаги и псевдоним синхронизации? - PullRequest
2 голосов
/ 15 апреля 2019

Я хотел бы написать pre-hook для Mercurial, написанного на Python.Я хотел бы проверить флаги, переданные команде pull, а также проверить псевдоним синхронизации («удаленный URL»).

Я не заметил ничего подобного на:

1 Ответ

1 голос
/ 15 апреля 2019

kwargs['args'], кажется, содержит команду (как одну строку) и все аргументы команды (включая URL псевдонима синхронизации по умолчанию, по крайней мере, при извлечении через TortoiseHG).

Таким образом, желаемый хук может выглядеть примерно так:

from mercurial import ui

def check_pull(ui, repo, **kwargs):
    """
    [hooks]
    pre-pull.check_pull = python:.hg/hooks/my_hooks.py:check_pull
    """
    args = kwargs['args']
    is_pull_all = not '--bookmark' in args
    is_pull_clowncopter = 'http://hg.example.com/clowncopter/' in args
    if is_pull_all and is_pull_clowncopter:
        ui.warn('Detected pull all from clowncoper. Did you forget to switch to the main repository or target a specific bookmark?\n')
        return True
...