Umzug eines Subversion Repository

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 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