2016-11-18 9 views
-1

Я пытаюсь отправить электронное письмо члену нашей тестовой группы, когда определенный файл привязан к нашему репозиторию SVN. У меня есть крючок , который работает правильно, используя sendmail со всем необходимым содержимым, но проблема в том, что выполнение команды sendmail требует времени, и члены команды будут жаловаться. Я зарегистрировал сообщение на консоли TortoiseSVN, чтобы пользователи знали, что происходит, но оно не появляется до после, и почта отправляется, что делает сообщение бесполезным.Отправить письмо в фоновом режиме в SVN post-commit

У меня два вопроса:

  1. Могу ли я каким-то образом сделать свой крюк выход это сообщение перед тем sendmail пробегов? Команда echo находится перед sendmail, но, похоже, это не так много
  2. Могу ли я заставить команду sendmail работать в фоновом режиме?

Вот сценарий:

REPOS="$1" 
REV="$2" 
TXN_NAME="$3" 

# Make sure that the log message contains some text. 
SVNLOOK=/opt/bitnami/subversion/bin/svnlook 
SENDMAIL=/usr/sbin/sendmail 

AUTHOR=$($SVNLOOK author -r "$REV" "$REPOS") 
FOUND=$($SVNLOOK changed -r "$REV" "$REPOS" | grep -Pc '[U]\s+.+(file.txt)$') 

MAILLOCATION=/home/bitnami/svn/test 

MAILMESSAGE="To: [email protected]\nFrom: [email protected]\nSubject: File was modified\n\n$AUTHOR modified the file" 

if [ $FOUND -eq 1 ]; then 
    echo "You've modified the file, yada yada yada" >&2 
    echo "Note: Your commit did not fail, even though the text says it did." >&2 


    $SENDMAIL -t < $MAILLOCATION & 



    exit 1 
fi 

exit 0 

Я попытался с помощью eval $($SENDMAIL -t < $MAILLOCATION) & и несколько других вещей, как команда sendmail, но ничего не помогло.

+2

BTW .: Я предлагаю, чтобы проверить, почему Sendmail команда принимает возрастов. – Cyrus

+0

Как насчет https://www.visualsvn.com/support/topic/00018/ или http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/mailer/? – bahrep

+0

@bahrep Это для VisualSVN. Я не использую его. – Brandon

ответ

0

Вы можете попробовать:

nohup $SENDMAIL -t < $MAILLOCATION &>/dev/null & 
disown 

Взятые из here