Frage

Wir haben eine Staging-Version unserer Web-Anwendung (es ist im Grunde eine Subversion Arbeitskopie, dass niemand arbeitet auf), die in ‚/ apps / Software‘ lebt. Jeder Entwickler hat seine eigene Arbeitskopie in ‚~ / apps / Software‘. Ich möchte eine einfache post-commit Hook-Skript verwenden, um die Staging-Kopie ein Entwickler jedes Mal zu aktualisieren, für eine Änderung des Repository verpflichtet.

Klingt einfach nicht wahr? Nun, ich habe schlug meinen Kopf gegen eine Mauer auf diese länger als ich sollte. Die Hook-Skript (so genannte 'post-commit', befindet sich in / svn / Software / Haken, permissions = 777, Benutzer: group = Apache: dev) ist wie folgt (ignorieren die kommentierten aus Bits für jetzt):

#!/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 ist es. Die Protokolldatei hat die gleichen Berechtigungen und Benutzer: Gruppe als Post-Commit-Skript, und ich habe auch die Inszenierung kopieren Sie die gleichen Benutzer gegeben: Gruppe und Berechtigungen. Apache selbst (wir verwenden die Apache Subversion-Erweiterung) ist unter der Apache läuft: dev auch. Ich weiß, dass der Haken ausgeführt wird, weil das Zeug, das über das Senden eine E-Mail Kommentar gesetzt hat funktioniert gut - es ist nur der Update-Befehl, der nicht ist

.

Ich kann auch ausführen die post-commit Hook-Skript ohne Umgebungsvariablen:

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

und es läuft gut, die ‚svn update‘ keine Probleme durchführen. Ich habe sogar versucht, die ‚>>‘ Entfernen Datei zu protokollieren, aber es macht keinen Unterschied machen.

Jede Hilfe auf diesem würde geschätzt ...

War es hilfreich?

Lösung

Sie nur die Standardausgabe in das Protokoll sendet Ausgang hier, nicht Fehler:

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

Tun Sie dies stattdessen zu sehen, was falsch läuft:

/usr/bin/svn update /apps/software >> /var/log/svn/software.log 2>&1
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top