Raspberry PI mit SVN Sync

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