Как мне написать мой hgrc, чтобы Mercurial обнаружил мои хуки? - PullRequest
0 голосов
/ 01 октября 2010

записал две функции в файл commit_hooks.py, который я хочу запустить до того, как какой-либо коммит станет постоянным, но я не могу понять, как написать свой hgrc для их обнаружения.

Функциязаголовки:

def precommit_bad_merge(ui, repo, parent1=None, parent2=None, **kwargs):
...

def precommit_bad_branching(ui, repo, **kwargs):
...

Я пытался использовать это " руководство ", но документация слишком "man pagey" для меня.Следующее - это изгой, который не работает.

[hooks]
precommit = ..\..\mno2\commit_hooks.py

Обновление! Переписав строку ловушки на:

precommit = D:\environments\next\mno2\commit_hooks.py

, чтобы Mercurial обнаружил ловушку предварительной фиксации,но по какой-то причине он всегда выходит со статусом 1.

Ответы [ 2 ]

2 голосов
/ 02 октября 2010

Настройте ваш [hooks] раздел следующим образом:

[hooks]
precommit.foo = python:D:\environments\next\mno2\commit_hooks.py:precommit_bad_merge
precommit.bar = python:D:\environments\next\mno2\commit_hooks.py:precommit_bad_branching

Синтаксис для строки precommit, которую вы использовали, предназначен для внешних хуков, поэтому он рассматривал ваш файл Python как автономныйскрипт (который я предполагаю, что это не так, поскольку вы используете сигнатуры функций для перехватов в процессе).

Возможно, вам понадобится исполняемый файл python на вашем пути (да).

Для получения дополнительной информации см. Подробное руководство по перехватам в процессе ;в комментариях скрыта полезная информация.

0 голосов
/ 01 октября 2010

В документации "man pagey" есть раздел о синтаксисе хуков Python:

Синтаксис хуков Python следующий:

hookname = python:modulename.submodule.callable
hookname = python:/path/to/python/module.py:callable

Хуков Python запускаются внутриМеркуриальный процесс.Каждый хук вызывается как минимум с тремя аргументами ключевого слова: объект пользовательского интерфейса (ключевое слово ui), объект репозитория (ключевое слово repo) и ключевое слово hooktype, указывающее, какой тип хука используется.Аргументы, перечисленные выше как переменные среды, передаются в качестве аргументов ключевых слов без префикса HG_ и имен в нижнем регистре.

Если ловушка Python возвращает значение «true» или вызывает исключение, это рассматривается как сбой.

...