Domanda

Abbiamo una versione temporanea della nostra applicazione web (è fondamentalmente una copia di lavoro sovversiva su cui nessuno lavora) che vive in "/ app / software". Ogni sviluppatore ha la propria copia di lavoro in "~ / apps / software". Vorrei utilizzare un semplice script hook post-commit per aggiornare la copia di gestione temporanea ogni volta che uno sviluppatore commette una modifica al repository.

Sembra semplice vero? Beh, ho sbattuto la testa contro un muro di mattoni per più tempo di quanto avrei dovuto. Lo script hook (chiamato 'post-commit', che si trova in / svn / software / hooks, autorizzazioni = 777, utente: gruppo = apache: dev) è il seguente (ignora i bit commentati per ora):

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

Questo è tutto. Il file di registro ha le stesse autorizzazioni e lo stesso utente: gruppo dello script post-commit e ho persino assegnato alla copia di gestione temporanea lo stesso utente: gruppo e autorizzazioni. Apache stesso (stiamo usando l'estensione di sovversione apache) funziona anche con apache: dev. So che l'hook è in esecuzione, perché le cose che sono state commentate sopra inviando un'e-mail funzionano bene - è solo il comando di aggiornamento che non lo è.

Posso anche eseguire lo script hook post-commit senza variabili d'ambiente usando:

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

e funziona benissimo, eseguendo "svn update" senza problemi. Ho anche provato a rimuovere "> >" per registrare il file, ma non fa differenza.

Qualsiasi aiuto su questo sarebbe molto apprezzato ...

È stato utile?

Soluzione

L'unico output standard inviato al registro qui, non l'output di errore:

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

Fallo invece per vedere cosa non va:

/usr/bin/svn update /apps/software >> /var/log/svn/software.log 2>&1
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top