Le hook post-commit de Subversion pour mettre à jour la version 'staging' ne fonctionne pas

StackOverflow https://stackoverflow.com/questions/1409791

Question

Nous avons une version intermédiaire de notre application Web (il s’agit en réalité d’une copie de travail subversion sur laquelle personne ne travaille) qui réside dans '/ apps / software'. Chaque développeur a sa propre copie de travail dans '~ / apps / software'. J'aimerais utiliser un simple script de hook post-commit pour mettre à jour la copie de stockage intermédiaire chaque fois qu'un développeur valide une modification dans le référentiel.

Cela semble simple, non? Eh bien, je me suis cogné la tête contre un mur de briques plus longtemps que je ne le devrais. Le script de hook (appelé 'post-commit', situé dans / svn / software / hooks, permissions = 777, utilisateur: groupe = apache: dev) est le suivant (ignore pour l'instant les bits mis en commentaire):

#!/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}

C'est ça. Le fichier journal a les mêmes autorisations et utilisateur: groupe que le script de post-validation et j'ai même donné à la copie intermédiaire le même utilisateur: groupe et autorisations. Apache lui-même (nous utilisons l'extension apache subversion) s'exécute sous apache: dev. Je sais que le hook est en cours d’exécution, car ce qui a été commenté au-dessus de l’envoi d’un courrier électronique fonctionne bien - c’est la commande de mise à jour qui ne l’est pas.

Je peux également exécuter le script de hook post-commit sans variables d'environnement à l'aide de:

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

et il fonctionne bien, exécutant la 'svn update' sans problèmes. J'ai même essayé de supprimer le '> >' enregistrer le fichier, mais cela ne fait aucune différence.

Toute aide à ce sujet serait très appréciée ...

Était-ce utile?

La solution

Votre seule sortie standard d'envoi au journal ici, pas la sortie d'erreur:

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

Faites plutôt ceci pour voir ce qui ne va pas:

/usr/bin/svn update /apps/software >> /var/log/svn/software.log 2>&1
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top