ошибка перехвата после фиксации (код выхода 255) ошибка - PullRequest
3 голосов
/ 27 февраля 2012

Фиксирующий файл выдает предупреждение: ошибка после фиксации (код выхода 255) без вывода. Электронная почта тоже не отправляется. Мой файл hooks / post-commit содержит следующее содержимое

#!/bin/sh

REPOS="$1"
REV="$2"

"$REPOS"/hooks/mailer.py commit "$REPOS" $REV "$REPOS"/mailer.conf

Как я могу вручную запустить этот файл для устранения проблемы? Мой файл mailer.py также находится в папке hooks, а mailer.conf находится вне папки hooks.

1 Ответ

3 голосов
/ 28 февраля 2012

Как я могу вручную запустить этот файл для устранения проблемы?Мой файл mailer.py также находится в папке hooks, а mailer.conf находится вне папки hooks.

Это просто: просто запустите команду вручную.

$ cd $REPOS   #Where ever that is...
$ REV=230     #Whatever the revision number is

$ hooks/mailer.py commit . $REV mailer.conf

ВыМожно скопировать mailer.py в другой файл и поэкспериментировать с ним.Добавьте несколько операторов печати, запустите их в отладчике и т. Д. Например, вы, вероятно, захотите скрыть реальную почтовую часть вашей программы, чтобы не отсылать все по почте разработчикам, пока вы не будете готовы к отладке конкретного механизма отправки.Разработчикам не нравятся их почтовые ящики, засыпанные кучей тестов ловушек после фиксации.

$ cp hooks/mailer.py hooks/mailer2.py
$ cp mailer.conf mailer2.conf
$ hooks/mailer2.py commit . $REV mailer.conf

Я бы посоветовал вам отключить ловушку после фиксации (в Unix / Linux снимитеисполняемого бита должно быть достаточно, или просто переименуйте post-commit в post-commit.temp).затем попросите пользователя зафиксировать свое изменение.

Как только изменение будет зафиксировано, у вас будет номер редакции коммита, вызвавшего проблему.Теперь вы можете использовать этот номер ревизии при ручном запуске перехвата после фиксации.


Полезный совет

Если вы делаете предмит ловушка, позволяет ловушке принимать либо номер транзакции, либо номер редакции:

# Transaction number in pre-commit script:

REPOS="$1"
TRX="$2"

"$REPOS/hooks/myscript" -t $TRX "$REPOS"

Из командной строки:

 cd $REPOS
 hooks/myscript -r $REVISION .

Таким образом, вы можете отлаживать ловушку перед фиксациейс уже совершенными изменениями.Это намного, намного проще, чем пытаться отлаживать, совершая одно и то же изменение снова и снова.

...