SVN: una seconda implementazione del post-commit per progetti web

Maggio 7th, 2010 glycerin


 Powered by Max Banner Ads 

Una seconda implementazione dello script di post-commit è stata implementata causa bug trovati successivamente e quindi sono stato costretto a rivedere anche lo script per facilitare il bug-fixing.

Di seguito lo script nelle sue varie parti:

#!/bin/sh

#cd /var/www/htdocs/projectsvn/htdocs
#/usr/bin/svnlook dirs-changed /var/local/projectsvn |/usr/bin/xargs /usr/bin/svn up -N {} –username user –password password >> /var/tmp/svn.mail.01.$$$
#error_code=`/bin/echo “$?”`
#/bin/echo “Error_code: $error_code” >> /var/tmp/svn.mail.01.$$$
#if [ "$error_code" != 0 ]; then
#    /bin/echo “[Error] ERROR on $LINENO” >> /var/tmp/svn.mail.01.$$$
#    #exit 1
#fi

### update su directory
##/usr/bin/svnlook dirs-changed /var/local/projectsvn| /usr/bin/awk ‘{print “/var/www/htdocs/projectsvn/htdocs/”$1}’ |/usr/bin/xargs /usr/bin/svn up -N –username user –password password
#cd /var/www/htdocs/projectsvn/htdocs
#/usr/bin/svnlook dirs-changed /var/local/projectsvn| /usr/bin/xargs /usr/bin/svn up -N –username user –password password >> /var/tmp/svn.mail.01.$$$
#error_code=`/bin/echo “$?”`
#/bin/echo “Error_code: $error_code” >> /var/tmp/svn.mail.01.$$$
#if [ "$error_code" != 0 ]; then
#    /bin/echo “[Error] ERROR on $LINENO” >> /var/tmp/svn.mail.01.$$$
#    #exit 1
#fi
### END update su directory

### update su singolo file
/usr/bin/svnlook changed /var/local/projectsvn| /bin/sed “s/^….//” | /usr/bin/awk ‘{print “/var/www/htdocs/projectsvn/htdocs/”$1}’ |/usr/bin/xargs /usr/bin/svn up –username user –password password >> /var/tmp/svn.mail.01.$$$
error_code=`/bin/echo “$?”`
/bin/echo “Error_code: $error_code” >> /var/tmp/svn.mail.01.$$$
if [ "$error_code" != 0 ]; then
    /bin/echo “[Error] ERROR on $LINENO” >> /var/tmp/svn.mail.01.$$$
    #exit 1
fi
### END update su singolo file

/bin/echo “—————————————————-” >> /var/tmp/svn.mail.01.$$$

#Invio mail
AUTHOR=`/usr/bin/svnlook author    /var/local/projectsvn`;

echo “Upgrade to revision by $AUTHOR” >> /var/tmp/svn.mail.01.$$$
/usr/bin/svnlook changed /var/local/projectsvn >> /var/tmp/svn.mail.01.$$$

mail -s “Projectsvn update from $AUTHOR” user@dominio.it -a “From: svn update <userfrom@dominio.it>” -a “Return-Path: userfrom@dominio.it” < /var/tmp/svn.mail.01.$$$

if [ -e /var/tmp/svn.mail.01.$$$ ]; then
    rm -f /var/tmp/svn.mail.01.$$$
fi

In quest’ultimo caso sono stati inseriti dei codici di controllo al fine di controllare che la procedura vada a buon fine.
Quale ad esempio la parte inerente l’error_code. Tutte queste parti possono essere disattivate in un secondo tempo, insieme all’invio della mail.

Technorati Tags: svn, svnlook, subversion

  • Share/Bookmark

Posted in Debian, Linux, News, Website | No Comments »

SVN: una prima implementazione del post-commit per progetti web

Aprile 30th, 2010 glycerin

Nel dover gestire dei progetti web utilizzando SVN (SubVersion) è utile abilitare un hook (il post-commit in particolare) che faccia un update del progetto web e in particolare della copia che sarà visibile via HTTP formulando la URL del progetto.
Un primo script è il seguente che in sostanza fa un update per ogni commit del repository.

host:~$ cat /var/local/projectsvn/hooks/post-commit
#!/bin/sh
/usr/bin/svn update /var/www/htdocs/projectsvn/htdocs –username user –password password

Un altro script, che io preferisco, invece si occupa di fare l’update delle singole directory che vengono aggiornate mediante la utility svnlook ed è il seguente:

host:~$ cat /var/local/projectsvn/hooks/post-commit
#!/bin/sh
/usr/bin/svnlook dirs-changed /var/local/projectsvn| /usr/bin/awk ‘{print “/var/www/htdocs/projectsvn/htdocs/”$1}’ |/usr/bin/xargs /usr/bin/svn up -N –username user –password password

dove la directory /var/local/projectsvn sarebbe il repository del progetto, mentre la directory /var/www/htdocs/projectsvn/htdocs/ sarebbe la directory della cosiddetta working copy. In soldoni non viene fatto l’update ricorsivo del progetto ma solo delle singole directory che restituisce la parte /usr/bin/svnlook dirs-changed /var/local/projectsvn.

In ultimo può essere comodo controllare che lo script sia funzionante magari implementando anche l’invio di una mail. Come ad esempio con il seguente script:

#Invio mail
AUTHOR=`/usr/bin/svnlook author    /var/local/bakecasvn`;

echo “Upgrade to revision by $AUTHOR” >> /var/tmp/svn.mail.01.$$$
/usr/bin/svnlook changed /var/local/projectsvn >> /var/tmp/svn.mail.01.$$$

mail -s “Projectsvn update from $AUTHOR” user@dominio.it -a “From: svn update <userfrom@dominio.it>” -a “Return-Path: userfrom@dominio.it” < /var/tmp/svn.mail.01.$$$

if [ -e /var/tmp/svn.mail.01.$$$ ]; then
        rm -f /var/tmp/svn.mail.01.$$$
fi
#END Invio mail

Technorati Tags: svn, svnlook, subversion

  • Share/Bookmark

Posted in Debian, Linux, News, Website | No Comments »