ошибка post-commit hook (код выхода 255)

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

#!/bin/sh

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

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

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


person user1076881    schedule 27.02.2012    source источник


Ответы (1)


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

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

$ 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). затем попросите пользователя зафиксировать свое изменение.

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


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

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

# Transaction number in pre-commit script:

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

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

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

 cd $REPOS
 hooks/myscript -r $REVISION .

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

person David W.    schedule 27.02.2012
comment
Спасибо, Дэвид, я бы попробовал. Какое должно быть правильное разрешение для файла mailer.py? - person user1076881; 28.02.2012
comment
в настоящее время это -rw-rw-r-x 1 пользователь grp mailer.py - person user1076881; 28.02.2012
comment
@ user1076881 Интересный вопрос. Пользователь, выполняющий серверный процесс (и, возможно, владелец файла), должен иметь разрешение на выполнение. Предполагая, что это то же самое, что и владелец файла, это должно быть -rwx ??????. Остальное не имеет значения. Это может быть -rwxr-xr-x (0755) или -rwxr - r-- (744) или даже -rwx ------ (700). Дело в том, что владелец должен иметь возможность выполнить файл. Сделай chown 755 mailer.py. Также убедитесь, что файл принадлежит пользователю, которому принадлежит репо, и это тот же пользователь, который выполняет процесс сервера svn. - person David W.; 28.02.2012