SVN Migration mit svnsync über http

Subversion ist eine Sourcecodeverwaltung von Dateien und Ordnern in einem Repository werden die dem Projekt zugehörigen Daten abgelegt. Auf einem Server können mehrere solcher Projektarchive abgelegt und verwaltet werden. Über diese Archive werden alle Versionsstände auf dem Server abgelegt. Die Benutzer arbeiten üblicherweise mit dem aktuellsten Stand, den ein solches Archiv hat.

subversion_logo-svg

Ich habe online einen solchen Server aufgesetzt und möchte diesen in einen neueren Server (den ich dieses mal anders aufgesetzt habe) migrieren. Dabei möchte ich idealerweise auf einen Dump verzichten (großer Dateitransfer, viele mögliche Fehlerquellen). Im Folgenden beschreibe ich, wie eine solche MIgration durchgeführt werden kann.

Installation von Subversion

Die Installation von einem neuen Debian Jessie Server ist recht einfach durchzuführen. Als Admin (root):

apt-get update
apt-get install subversion apache2 libapache2-svn
a2enmod authz_user
mkdir /var/lib/svn
svnadmin create /var/lib/svn
chown -R www-data /var/lib/svn

Nach erfolgreicher Installation werden Benutzer angelegt. Für unsere Instanz wird der erste Benutzer mit „-cm“ angelegt, die folgenden nur mit „-m“. Die Vorgestellte Option „-b“ erlaubt uns das passwort über die commandline einzugeben statt interaktiv danach zu fragen.

htpasswd -bcm /etc/apache2/dav_svn.passwd testuser1 testuser1
htpasswd -bm /etc/apache2/dav_svn.passwd testuser2 testuser2

Den Inhalt der erstellten Passwort-Datei kann mit folgendem Befehl abgefragt werden:

cat /etc/apache2/dav_svn.authz

Jetzt kann der Subversion Deamon gestartet werden und mit der Konfiguration von Webdav fortgeschritten werden.

svnserve -d -r /var/lib/svn
a2enmod dav
a2enmod dav_svn
a2enmod authz_svn

Abschließend die Datei /etc/apache2/mods-available/dav_svn.conf anpassen.

nano /etc/apache2/mods-available/dav_svn.conf

Damit sie so aussieht (https ist nicht aktiviert):

<Location />
 DAV svn
 SVNParentPath /var/lib/svn/
 SVNListParentPath on

 AuthType Basic
 AuthName "Subversion Repository"
 AuthUserFile /etc/apache2/dav_svn.passwd

 AuthzSVNAccessFile /etc/apache2/dav_svn.authz

 Require valid-user
</Location>

Am Ende noch den Apache durchstarten, damit ist alles fertig installiert und konfiguriert.

/etc/init.d/apache2 restart

Migration Remote to Local Subversion

Zuerst wird lokal ein Repository benötigt:

cd /var/lib/svn
mkdir testlocal
svnadmin create testlocal

Mit diesem Repository können wir den Vorgang starten:

echo '#!/bin/sh' > testlocal/hooks/pre-revprop-change
chmod +x testlocal/hooks/pre-revprop-change
svnsync init file:////var/lib/svn/testlocal http://<IP>:<PORT>/<REPOSITORY>

Jetzt sind die Vorbereitungen abschlossen und wir können den Transfer starten:

svnsync sync file:////var/lib/svn/testlocal

Das ganze dauert nun ein wenig, danach sind alle historischen Daten vom alten auf das neue Repository übertragen.

Migration Remote to Remote Subversion

Hier verfahren wir nach dem gleichen Muster. Zuerst das Repository (testlocal) anlegen:

cd /var/lib/svn
mkdir testlocal
svnadmin create testlocal

Mit diesem Repository können wir nun den Vorgang ebenfalls starten:

echo '#!/bin/sh' > testlocal/hooks/pre-revprop-change
chmod +x testlocal/hooks/pre-revprop-change
svnsync init http://<TARGET-IP>/testlocal http://<SOURCE-IP>/testlocal

Jetzt sind die Vorbereitungen abschlossen und wir können den Transfer starten:

svnsync sync http://<TARGET-IP>/testlocal

Auch hier dauert das ganze nun ein wenig, danach sind alle historischen Daten vom alten auf das neue Repository übertragen.

Quellen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.