Как получить доступ к сообщению коммита из Mercurial Input или Changeset hook - PullRequest
2 голосов
/ 03 ноября 2011

Я хотел бы написать крючок для Mercurial, чтобы он делал следующее: я изо всех сил пытаюсь начать работу.

  • Запускать в центральном репо и выполнять при нажатии на наборы изменений (я думаю Я должен использовать хук "input" или "changegroup")
  • Поиск в каждом сообщении о коммитах строки в формате «issue: [0-9] *»
  • ЕСЛИ найдена строка, позвоните в веб-службу и предоставьте номер проблемы, сообщение о коммите и список файлов, которые были изменены

Итак, для начала, как я могу получить сообщение о коммите для каждого коммита из хука "input" или "changegroup"? Любой совет, кроме этого, о том, как достичь других пунктов, также был бы уместен.

Спасибо за любую помощь.

Ответы [ 2 ]

2 голосов
/ 03 ноября 2011

Вы захотите использовать хук incoming, который вызывается для каждого набора изменений, который применяется к хранилищу (с помощью pull, push или unbundle).

В вызывающем скрипте текущий набор изменений id будет доступен через переменную окружения HG_NODE, в python вы можете получить к нему доступ с помощью os.environ['HG_NODE'].

В зависимости от того, как вы хотите это сделать, обратите внимание на предоставленную ловушку bugzilla в качестве отправной точки.

2 голосов
/ 03 ноября 2011

changegroup крючок вызывается один раз за толчок.Если вы хотите проанализировать каждый набор изменений, то вам нужен хук incoming (нет AFAIK хука input) - он будет вызываться для каждого набора изменений с ID в переменной среды HG_NODE.Вы можете получить сообщение коммита, например, hg log -r $HG_NODE --template '{desc}' или через API.

...