Ein bestehendes Subversion Repository in mehrere neue aufspalten

02 Oktober 2010
Heiko Falk

Unser Ziel ist es, ein bestehendes Subversion (SVN) Repository, welches mehrere Projekte beinhaltet, in mehrere neue SVN Repositories auszulagern. Hierbei soll die Historie für die jeweiligen Projekte erhalten bleiben. Die Projektstruktur in den neuen Repositories soll ferner den aktuellen Richtlinien folgen und die Verzeichnisse „trunk“, „branches“ und „tags“ enthalten.

Ausgangslage

Das bestehende SVN Repository „OldRepository“ mit den Projekten „Blog“, „Calc“ und „Vione“:

Vorgehensweise

1. Das bestehende SVN Repository in ein Dump-File auslesen:

  1. vnadmindump C:\OldRepository>C:\DumpOldRepository.tmp

2. Für die einzelnen Projekte mittels svndumpfilter jeweils ein eigenes Dump-File erzeugen, in welchem nur die Einträge, deren Pfad mit dem Projektnamen beginnt, enthalten sind:

  1. svndumpfilterincludeVione<C:\DumpOldRepository.tmp>C:\DumpVione.tmp--drop-empty-revs--renumber-revs

Achtung: Die Revisionsnummern werden neu vergeben, sind also mit den ursprünglichen nicht mehr vergleichbar.

3. In der Datei “DumpVione.tmp” müssen jetzt noch die Pfadangaben angepasst werden. Die Inhalte des ursprünglichen Verzeichnisses „Vione“ sollen sich im neuen SVN Repository im Verzeichnis „trunk“ befinden. Das Umbenennen kann in einem Texteditor vorgenommen werden. Hierbei ist allerdings darauf zu achten, dass dieser auch mit sehr großen Dateien zu Recht kommt.

  1. ersetze"Node-path: Vione"durch"Node-path: trunk"
  2. ersetze"Node-copyfrom-path: Vione">"Node-copyfrom-path: trunk"

4. Neues SVN Repository „Vione“ anlegen:

  1. svnadmincreateVione

5. Das Dump-File “DumpVione.tmp” in das neu erstellte SVN Repository einlesen:

  1. svnadminload--ignore-uuidVione<C:\DumpVione.tmp

6. Noch die beiden Verzeichnisse “branches” und”tags” anlegen und fertig!