4 Stimmen

Subversion Post-Commit-Hook zur Aktualisierung der 'Staging'-Version funktioniert nicht

Wir haben eine Staging-Version unserer Webanwendung (im Grunde eine Subversion-Arbeitskopie, an der niemand arbeitet), die in "/apps/software" liegt. Jeder Entwickler hat seine eigene Arbeitskopie in "~/apps/software". Ich möchte ein einfaches Post-Commit-Hook-Skript verwenden, um die Staging-Kopie jedes Mal zu aktualisieren, wenn ein Entwickler eine Änderung am Repository vornimmt.

Klingt einfach, oder? Nun, ich habe meinen Kopf schon länger gegen eine Ziegelwand geschlagen, als ich sollte. Das Hook-Skript (mit dem Namen 'post-commit', zu finden in /svn/software/hooks, permissions=777, user:group=apache:dev) sieht wie folgt aus (ignorieren Sie die auskommentierten Teile vorerst):

#!/bin/sh

/usr/bin/svn update /apps/software >> /var/log/svn/software.log

# REPOS="$1"
# REV="$2"
# AUTHOR=`/usr/bin/svnlook author -r "$REV" "$REPOS"`
# LOG=`/usr/bin/svnlook log -r "$REV" "$REPOS"`
# EMAIL="test@example.com"

# echo "Commit log message as follows:-
#
# \"${LOG}\"
#
# The staging version has automatically been updated.
#
# See http://trac/projects/software/changeset/${REV} for more details." | /bin/mail -s "SVN : software : revision ${REV} committed by ${AUTHOR}" ${EMAIL}

Das war's. Die Protokolldatei hat dieselben Berechtigungen und Benutzer:Gruppen wie das Post-Commit-Skript, und ich habe sogar der Staging-Kopie dieselben Benutzer:Gruppen und Berechtigungen gegeben. Der Apache selbst (wir verwenden die Apache-Subversion-Erweiterung) läuft ebenfalls unter apache:dev. Ich weiß, dass der Hook ausgeführt wird, denn das, was über dem Senden einer E-Mail auskommentiert ist, funktioniert einwandfrei - nur der Update-Befehl nicht.

Ich kann das Post-Commit-Hook-Skript auch ohne Umgebungsvariablen ausführen:

$ env - /svn/software/hooks/post-commit /svn/software <changeset>

und es läuft gut und führt das 'svn update' ohne Probleme aus. Ich habe sogar versucht, das ">>" aus der Protokolldatei zu entfernen, aber das macht keinen Unterschied.

Jede Hilfe in dieser Sache wäre sehr willkommen...

3voto

Wim Coenen Punkte 64891

Sie senden hier nur die Standardausgabe in das Protokoll, nicht die Fehlerausgabe:

/usr/bin/svn update /apps/software >> /var/log/svn/software.log

Machen Sie stattdessen dies, um zu sehen, was schief läuft:

/usr/bin/svn update /apps/software >> /var/log/svn/software.log 2>&1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X