SVN Checkout Script

Aus Gargi.org
Version vom 30. Juni 2018, 11:38 Uhr von Gargi (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „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 n…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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