PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SVN Checkout Script



Gargi
08.08.2009, 23:58
Ich habe mir einmal ein Script geschrieben, das einen speziellen SVN Tree auf neue Revisionen überprüft. Wenn es neue Revisionen gibt liest das Script alle neue Revisionen ein und schickt die dahinter stehenden Logs als E-Mail zu.

Das Script sieht wie folgt aus (für den Darkplaces Quake SVN Tree):


#!/bin/sh

mailadresse=Deine@mail.adresse
mail_subject="[System] News from the Darkplaces svn tree!"
ver_log=/var/log/dp_version_checkout.log
rev_log=/var/log/dp_rev.log
svn_tree=svn://svn.icculus.org/twilight/trunk/darkplaces
svn_server=svn.icculus.org

ping -c 1 $svn_server
if [ $? != 0 ]
then
exit 1
else

dp_version=$(svn info $svn_tree | grep "Revision:" | cut -d':' -f 2 | sed -e 's/ //g')

if [ -f $ver_log ]
then
ver_old=$(cat $ver_log)
else
echo $dp_version > $ver_log
exit 1
fi

if [ $ver_old = $dp_version ]
then
exit 1
else
steps=$(($dp_version-$ver_old))
fi

rm $rev_log

if [ $steps = 1 ]
then
echo "One new revision available:" > $rev_log
else
echo "$steps new revisions available:" > $rev_log
fi

i=1
while [ $i -le $steps ]; do
rev_neu=$(($ver_old+$i))
svn log -r $rev_neu $svn_tree >> $rev_log
i=`expr $i + 1`
done

mail -a "Content-Type: text/plain; charset=UTF-8" -s "$mail_subject" $mailadresse < $rev_log
rm $ver_log
echo $dp_version >> $ver_log
fi

Erklärung:
mailadresse Da gebt Eure E-Mail Adresse an
mail_subject Der Betreff, der in Eurer Mail erscheinen wird
ver_log Die aktuelle Revision wird hier abgespeichert (am besten unter /var/log legen)
rev_log Die ausgelesenen Revisionslogs werden hier abgespeichert. Am besten unter /var/log ablegen
svn_tree Der SVN Tree, den Ihr überprüfen wollt.
svn_server Der Server, auf dem der SVN Tree liegt.

Die Datei speichert nachdem Ihr oben im Kopfbereich Eure Variablen entsprechend angepasst habt unter /usr/local/bin/xyz_svncheckup ab. Für das xyz schreibt am besten irgendwas Eindeutiges, um unterschiedliche Scripte eideutig unterscheiden zu können. Das Script muss natürlich ausführbar gemacht werden:


chmod +x /usr/local/bin/xyz_svncheckup

Hinterlegt dann den Aufruf in Eure Crontab:


crontab -e

Für einen stündlichen Checkup:


0 */1 * * * /usr/local/bin/xyz_svncheckup > /dev/null

Viele Grüße,
Euer
Gargi