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