Я пытаюсь заставить обработчик Mercurial работать в Windows.
Проблема не в том, как написать обработчик (я хочу использовать существующий, в данном случае Хук BugTracker.Net для интеграции Mercurial - я не нашел прямой ссылки на файл, но вы можете увидеть его, если загрузите BT.net здесь , он находится в "mercurial"вложенная папка).
Проблема в том, как сказать Mercurial запустить его.
Я потратил довольно много времени на чтение документации, но я застрял прямо сейчас.
(это будетвероятно, будет легче с определенным знанием Python - которого у меня нет)
Я знаю, что мне нужно вставить строку в файл hgrc (в папке .hg моего репозитория).
В книге HG есть пример , который выглядит следующим образом:
[hooks]
commit.example = python:mymodule.submodule.myhook
А на сайте Mercurial есть еще один пример, который выглядит следующим образом:
[hooks]
changegroup = /path/to/changegrouphook
Теперь я хочу "входящий" хук, поэтому, по крайней мере, я знаю, что должен сделать это:
[hooks]
incoming.btnet = X
Проблема в том, чтобы выяснить «X».
Имя файла: hg_hook_for_btnet.py , и в файле есть строка, которая выглядит следующим образом:
def debug_out(s):
Полагаю,это имя самой «функции».
Так что моя строка должна выглядеть примерно так:
[hooks]
incoming.btnet = python:hg_hook_for_btnet.debug_out
Но это выдает мне сообщение об ошибке [Errno 2] Нет такого файла иликаталог когда я нажимаю.
Я уже перепробовал много разных вариантов, но он не работает, и я не знаю, что я делаю неправильно.
- Нужно ли мне python: в начале или нет?
- Нужно ли указывать расширение файла .py или нет?
- Нужно ли / path / to /..., как указанов примере с сайта Mercurial (см. выше)?
- Если да, какой правильный синтаксис для пути?(просто c: \ MyRepo \ не работает - синтаксис должен быть другим в Python)
Кроме того, я поместил файл подключения в правильную папку?
Прямо сейчас он находится в основной папке моего хранилища (на том же уровне, что и папка .hg).
РЕДАКТИРОВАТЬ:
Мартин, яизменил это на следующее:
[hooks]
incoming.btnet = python:~c:\HG\MyRepo\hg_hook_for_btnet.py:debug_out
Теперь я получаю другое сообщение: [Errno 22] Недопустимый аргумент
Я полагаю, это из-за repo
и ui
аргументы вы упомянули.
Значит ли это, что скрипт хука сломан?
(как я уже сказал - я ничего не знаю о Python, это существующий скрипт хука из открытого исходный код ошибки )
РЕДАКТИРОВАТЬ 2:
Извините за путаницу в отношении внутрипроцессного и отдельного процесса - я знаю, что естьРазница, но я предположил, что если хук написан на Python, он должен быть в процессе автоматически (оказывается, я был не прав: -)
Хорошо, с синтаксисом в вашем отредактированном ответе, скрипт по крайней мереработает.
У меня установлен Python 2.7 (он уже делал это, прежде чем я задал вопрос здесь) и изменил первую строку в скрипте на #!C:\Python27\python.exe
.
Теперь я получаю это:
running hook incoming.btnet: c:\HG\MyRepo\hg_hook_for_btnet.py
warning: incoming.btnet hook exited with status 1
Итак, скрипт запускается, но все еще есть какая-то ошибка.
Похоже, что это проблема, связанная с Bugtracker.NET, поэтому я попрошу в списке рассылки BT.NET дополнительные советы.
Спасибо за вашу помощьхотя без тебя я бы даже не зашел бы так далеко!