2009-11-21 2 views
3

Я создал крюк post-commit subversion для отправки сообщения по электронной почте каждый раз при совершении фиксации. Он вызывает скрипт python из файла post-commit в/var/svn/repos/hooks.Перехват post-commit Subversion

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

~/svnnotify.py $REV 

Но проблема в том, что SVN фиксации команда принимает больше времени, чтобы прекратить, как он ждет сценарий питона для завершения первого. Есть ли способ обойти это?

Спасибо

ответ

4

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

+0

спасибо за ответ :) .. Я пробовал, что..doesnt, похоже, работает .. это потому, что я передал аргумент скрипту? – JoeRP

+0

Tot & будет работать только в форме оболочки! – Umesh

+3

'&' в конце прекрасно работает для меня. Может быть, потому, что я также перенаправляю вывод (на данный момент во временный файл журнала, также может быть/dev/null, конечно): '/ some/dir/bin/pythonscript >> /tmp/my_thingy.log 2 > & 1 & '- это то, что выглядит мой крюк после фиксации. –

0

вызов пакетного файла и в этом пакетном файле выполнить питон скрипт для запуска в фоновом режиме, добавив амперсанд в конце команды в пакетном файле (&).

0

Возможно, обновление можно выполнить в простой очереди, которая будет зачеркнута запуском скрипта, вызванным из cron, и отправит сообщение, если что-то сидит в очереди.

Очередь может быть простым файлом в/tmp, sqlite-файле или таблице MySQL.

Если на отправке электронного письма достаточно долго, возможно, что-то с кодом в скрипте уведомлений. Не стоит так долго помещать электронное письмо в локальную почтовую очередь.