Raspberry ist bekannt dafür ziemlich viel Leistung aus dem kleine 3,5 Watt Gerät heraus zu kitzeln. Ich finde es immer wieder spannend neue Tools auszuprobieren und auch unser SVN zu synchronisieren. Zum einen geht es ziemlich schnell und per Cronjob auch dauerhaft.
Schritt 1 – Installation SVN auf dem Raspberry
Um SVN auf den Raspberry zu installieren geht’s mal wieder flott über apt-get oder aptitude. In meinem Fall nutze ich meistens aptitude auch wenn es oft nicht nötig ist.
sudo aptitude install svn
Nach ein paar Minuten ist SVN installiert und kann verwendet werden.
Schritt 2 – Anlegen eines SVN- Verzeichnisses
Ich verwende für meinen svn meistens ein Verzeichnis unter var
sudo mkdir /var/svn/
Anschließend erstellen wir per svnadmin unsere repositories die wir synchronisieren wollen.
cd /var/svn/ mkdir repo1 svnadmin create repo1
Schritt 3 – Initialisierung der Repositories
Fürs synchronisieren muss anschließend das Repository dem externen Server bekannt gemacht bzw. initialisiert werden. Hierfür habe ich ein kleine Script geschrieben und über den ersten Parameter wird der Reponame übergeben.
#!/bin/sh REPO=$1 SRC_PATH=/var/svn SERVER=svn://SERVERADDRESS LOG=/var/svn/log AUTH="--source-username USER --source-password PASS --sync-username USER --sync-password PASS" echo "CREATE: $SRC_PATH/$REPO" mkdir $SRC_PATH/$REPO echo "SVNADMIN CREATE $REPO" svnadmin create $SRC_PATH/$REPO echo "COPY Hooks" touch $SRC_PATH/$REPO/hooks/pre-revprop-change chmod +x $SRC_PATH/$REPO/hooks/pre-revprop-change echo '#!/bin/sh' > $SRC_PATH/$REPO/hooks/pre-revprop-change echo "INIT: $REPO" svnsync init $AUTH file://$SRC_PATH/$REPO $SERVER/$REPO >> $LOG/init_$REPO.log
./initRepo.sh repo1
Schritt 4 – Sync der Repositories
Fürs synchronisieren habe ich ebenfalls ein kleines Script geschrieben. Hierbei sind aber die Repos in der Datei vorhanden.
#!/bin/sh SERVER=svn://SERVERADDRESS LOG=/var/svn/log AUTH="--sync-username USER--sync-password PASS" DATE=$(date -d today) echo "-----------------------"; echo "Start Sync: $DATE"; REPO=repo1 echo "Sync: $REPO" svnsync sync $AUTH file:///var/svn/$REPO >> $LOG/sync.log DATE=$(date -d today) echo "End Sync at $DATE"; echo "--------------------------";
./sync.sh
Dieses Script verwende ich anschließend auch für den cronjob.
Schritt 5 – Cronjob einrichten
crontab -e
0 1 * * sudo /var/svn/sync.sh >> /var/svn/crontab.log