Umzug eines Subversion Repository
2009-06-26 Gespeichert in: Administration
Gerade stand ich vor der Aufgabe ein Subersion Repository von einm Server auf einen anderen zu verschieben. Einfach nur den letzten Stand zu kopieren wäre einfach, die Versionshistory sollte aber erhalten bleiben und ich hatte keinen administrativen Zugriff auf den Server, konnte also keinen Dump verwenden.
Nach einiger Recherche stieß ich auf
Also ans Werk:
Leider brach die Synchronizierung zwischendurch ein paarmal ab. Aber
Eigendlich wollte ich aber keine synchonisierbare Kopie, sondern einen Umzug. Die Verwaltungsinfomationen von
Damit ist das neue Repository entkoppelt, das alte kann gelöscht werden.
Leider hatte ich aber etwas vergessen. Die Benutzer in der Versionshistorie entsprachen noch dem alten Server, nicht dem neuen. Aber auch das ließ sich lösen (hier sehr einfach mit einem kleinen Shellskript, da nur ein Benutzer ;-):
Nach einiger Recherche stieß ich auf
svnsync. Zum Glück kam das Repository von einem Server mit Version 1.4 und bot somit das replay Kommando und der Zielserver von Kenai hatte die nötigen commit hooks schon installiert.Also ans Werk:
> svnsync init Zielrepository Ursprungsrepository
> svnsync sync Zielrepository
Leider brach die Synchronizierung zwischendurch ein paarmal ab. Aber
svnsync lässt sich problemlos wieder aufsetzen. Nur in manchen Fällen bleibt ein Lock liegen. Dieser kann aber mit folgendem Trick wieder entfernt werden, bevor svnsync weiter arbeiten kann:> svn propdelete svn:sync-lock --revprop -r 0 Zielrepository
Eigendlich wollte ich aber keine synchonisierbare Kopie, sondern einen Umzug. Die Verwaltungsinfomationen von
svnsync konnte ich also wieder löschen:> svn propdelete svn:sync-from-uuid --revprop -r 0 Zielrepository
> svn propdelete svn:sync-from-url --revprop -r 0 Zielrepository
> svn propdelete svn:sync-last-merged-rev --revprop -r 0 Zielrepository
Damit ist das neue Repository entkoppelt, das alte kann gelöscht werden.
Leider hatte ich aber etwas vergessen. Die Benutzer in der Versionshistorie entsprachen noch dem alten Server, nicht dem neuen. Aber auch das ließ sich lösen (hier sehr einfach mit einem kleinen Shellskript, da nur ein Benutzer ;-):
> for (( i = 1; i <= 1000; i++ )) do svn propset --revprop -r $i svn:author Autor Zielrepository; done
