SVN Checkout Script
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