2016-11-18 10 views
-1

Ich versuche, eine E-Mail an ein Mitglied unseres Testteams zu senden, wenn eine bestimmte Datei in unser SVN-Repository übertragen wurde. Ich habe die post-commit Haken richtig funktioniert mit sendmail mit allen richtigen Inhalten, aber das Problem ist, dass die Ausführung der sendmail Befehl dauert Ewigkeiten und Mitglieder des Teams wird sich beschweren. Ich habe eine Nachricht an die TortoiseSVN-Konsole angemeldet, die die Benutzer wissen lassen, was vor sich geht, aber es erscheint nicht nach die Mail gesendet wird, wodurch die Nachricht im Wesentlichen nutzlos.E-Mail im SVN-Post-Commit senden

Ich habe zwei Fragen:

  1. Kann ich irgendwie vor sendmail läuft meine Haken Ausgabe Diese Nachricht machen? Der echo Befehl ist vor sendmail aber es scheint nicht viel zu tun
  2. Kann ich den Befehl sendmail zwingen, im Hintergrund zu laufen? Hier

ist das Skript:

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 

Ich habe versucht, mit eval $($SENDMAIL -t < $MAILLOCATION) & und ein paar andere Dinge als sendmail Befehl aber nichts geholfen hat.

+2

Btw .: Ich schlage vor, zu prüfen, warum sendmail Befehl Alter nimmt. – Cyrus

+0

Was ist mit https://www.visualsvn.com/support/topic/00018/ oder http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/mailer/? – bahrep

+0

@bahrep Das ist für VisualSVN. Ich benutze es nicht. – Brandon

Antwort

0

Sie könnten versuchen:

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

Entnommen here