Я пытаюсь создать ловушку Mercurial, которая запускается, когда коммиты помещаются в главный репозиторий. Я создал сценарий python, как показано ниже:
# commit.py from mercurial import ui, hg from mercurial.i18n import gettext as _ def getV1ID(ui, repo, **kwargs): ui.write("The hook works!!!") v1id = ui.prompt('Enter the VersionOne ID') ui.write('VersionOne ID: '+v1id)
Для каждой ветки этот commit.py
дублируется, поскольку он содержит механизмы, которые необходимо запустить до того, как код будет помещен в основной репозиторий. Выталкивание должно быть успешным только в том случае, если эти механизмы предварительного проталкивания пройдут успешно. Пользователи могут изменить свой локальный commit.py так, чтобы они запускали только подмножество этих предварительных операций в зависимости от проекта, над которым они работают, и каждый человек мог работать над более чем одним проектом одновременно. Итак, commit.py
не может быть глобальным скриптом Python, который может находиться в папке .hg
.
Чтобы заставить Mercurial запустить локальный commit.py
в моем файле mercurial.ini (в C: \ Users \ UserName \ mercurial.ini) я добавил следующий оператор:
[hooks] prechangegroup = python:./commit.py:getV1ID
Сценарий python запускается, если я помещаю его в папку .hg
, но не тогда, когда я это делаю. Может ли кто-нибудь помочь мне пролить свет на эту проблему? Большое спасибо.