Kopieren eines Subversion Repository

Bei den Abklärungen zum Umzug von AtaraxiS habe ich mich mit dem Kopieren des Subversion Repository beschäftigt. Dabei fand ich 2 Varianten, die je nach Situation verwendet werden können.

 
Kopieren mittels svnadmin
Der einfachste Weg ein Subversion Repository zu kopieren ist das erstellen eines Dump mittels svnadmin. Dieser kann danach ins neue Repository importiert werden. Der Umzug der Daten von RepoA ins neue RepoB kann so durchgeführt werden:

svnadmin dump RepoA > RepoA.dump
svnadmin create RepoB; svnadmin load RepoB < RepoA.dump

Diese Lösung ist der empfohlene Weg. Allerdings muss svnadmin dazu auf dem Server ausgeführt werden, auf dem das Repository liegt. Fehlt einem der Zugang zum Server, ist dieser Ansatz nicht umsetzbar.

 
Kopieren mittels svnsync
Kann man svnadmin nicht verwenden, kann gibt es noch eine andere Möglichkeit. Sofern das Repository nicht all zu alt ist (1.4 oder neuer) kann man svnsync verwenden. Im Blog Paul’s Journal fand ich eine praktische Anleitung, die ich hier leicht abgeändert wiedergebe.

Der Ablauf für diese Art des Kopierens ist ein wenig umfangreicher:

export TOREPO=RepoB
mkdir $TOREPO
svnadmin create $TOREPO
cd $TOREPO
cat > hooks/pre-revprop-change <<EOF
#!/bin/sh

EOF
chmod 755 hooks/pre-revprop-change
cd ..
svnsync init file:///home/jgr/tmp/$TOREPO https://ein.entfernter.Server/repos/RepoA
svnsync --non-interactive sync file:///home/jgr/tmp/$TOREPO
svnadmin dump $TOREPO > {$TOREPO}.dump

Erst wird ein leeres Repository erstellt. Um ein wenig flexibler zu sein, ist der Namen des Zielrepository als Variable TOREPO definiert. Svnsync benötigt das Hookscript pre-revprop-change, das in dem Fall hier nichts machen soll. (Unter Windows genügt dafür eine leere *.bat Datei)
Ist das Repository bereit, kann man svnsync initialisieren und danach mit der Synchronisierung beginnen. Je nach Netzverbindung und Grösse des Repository kann dieser Vorgang einige Zeit dauern.
Am Ende empfiehlt es sich einen Dump zu erstellen. So braucht man beim nächsten Anlauf nicht wieder alle Daten übers Netzt zu kopieren.

 
Weitere Informationen
Wer gerne noch mehr zu dem Thema wissen möchte, sollte sich das SVN Buch von Red Bean anschauen. Auch die Kommentare zum Blogeintrag von Paul sollte man sich anschauen.