DeutschEnglish
2019-11-07

Content

Migration von Subversion Repositories

In diesem Artikel wird beschrieben, wie man ein Subversion Repository auf einen anderen Server umzieht.

Falls aktiv und häufig mit dem Repository gearbeitet wird, sollte der erste Schritt darin bestehen, die Schreibrechte auf dem alten Server zu entziehen. Damit soll verhindert werden, dass während dem Umzug ein Commit erfolgt. Die einfachste Vorgehensweise dafür ist, in der Subversion-Konfiguration die Variablen SVN_REPOS_?_ANON_ACCESS und SVN_REPOS_?_AUTH_ACCESS für das umzuziehende Repository auf 'read' oder auf 'none' zu setzen.

Nun folgt das Backup des alten Repositories. Dies sollte manuell angestoßen werden, da man nicht sicher sein kann, dass nicht noch jemand nach dem letzten automatischen Backup etwas eingecheckt hat. Dazu wählt man im Setup-Menü den entsprechenden Punkt für das Backup und im folgenden Dialog aus der Liste das entsprechende Repository. Danach läuft der Dump vom Repository durch. Wenn das abgeschlossen ist, wird ab dem Subversion Paket 0.5.0 Pfad und Name vom soeben erstellten Backup angezeigt. Diese Ausgabe sollte man sich notieren um zu wissen, welche Datei man gleich auf den Zielrechner zu kopieren hat. Bei älteren Paketversionen muss man im Setup-Menü nochmal den Menüpunkt List backup files auswählen. Das soeben erstellte Backup steht wahrscheinlich ganz oben, im Zweifelsfall schaut man auf Datum und Uhrzeit, welche im Dateinamen enthalten sind.

Der nächste Schritt besteht darin, die Backupdatei auf den Zielrechner zu kopieren, auf dem man bereits das Subversion-Paket installiert hat. Um das Backup über das Setup-Menü wieder einspielen zu können, muss der Zielpfad für die Kopieraktion der in SVN_BACKUP_TARGET angegebene Pfad sein. Außerdem sollte man ein neues leeres Repository einrichten, in welches das Backup eingespielt wird.

Aus dem Setup-Menü des Subversion-Pakets wählt man dann den Punkt Restore repository Aus der Liste wählt man das soeben neu erstellte leere Repository. Das war es schon. Jetzt nur noch den Nutzern die neue Adresse mitteilen und fröhlich mit dem umgezogenen Repository weiter arbeiten. Dazu müssen die User nicht eine neue WorkingCopy anlegen, sondern können ihre vorhandene WorkingCopy auf die neue Adresse modifizieren. Das macht man am besten direkt auf der Konsole im Hauptverzeichnis der lokalen WorkingCopy: svn switch --relocate <Adresse-alt> <Adresse-neu>

Zusammenfassung:

  • altes Repo auf dem Quellrechner deaktivieren oder wenigstens die Schreibrechte entziehen, nicht löschen natürlich!
  • Backup anlegen mit Setup
    -> Administration of services
      -> Subversion administration
       -> Subversion administration tools
        -> Subversion backup and restore
         -> Backup repository
  • gewünschtes Repo auswählen
  • bei Paket vor 0.5.x: List backup files entsprechende Datei steht wahrscheinlich ganz oben, auf die Zeit achten, um von cron-generierten Backups zu unterscheiden, hier: /mnt/data2/backup/svn/repos1-2008-09-24-095600.backup.bz2
  • ansonsten angezeigten Dateinamen des Backup kopieren
  • auf den Zielrechner kopieren in das Verzeichnis was dort bei SVN_BACKUP_TARGET angegeben ist
  • neues Repo anlegen auf Zielrechner
  • Auf Zielrechner Restore repository und richtiges Backup-File aus der Liste wählen
  • neues Repo den Benutzern mitteilen
  • evtl. vorhandene WorkingCopy mit neuer Adresse modifizieren: svn switch --relocate <Adresse-alt> <Adresse-neu>


Vielen Dank an Alexander Dahl für das Verfassen dieses HowTo's.