Subversion umzug und herauslösen

So da stand ich mal wieder vor einen Problem, jetzt hast ein SVN-Repository auf dem alten Rechner aber man bräuchte es in einer VM auf den eigenen Rechner. Zuerst dachte ich an einfaches FileCopy, aber ob das im Sinne der Entwickler ist, ich wage es irgendwie zu bezweifeln. Deswegen habe ich mich auf die Suche nach einer anderen Möglichkeit gemacht und siehe da es gibt sie:

svnadmin dump /repos/pfad > MeinKomplettesRepos.dmp
svnadmin create /neues/repos  // Wird nur bei Bedarf benoetigt
svnadmin load  /neues/repos < MeinKomplettesRepos.dmp

Der erste Befehl exportiert das Komplette Repositority und mit dem letzten wird der komlette export in das neue Repositority eingepflegt. Mit dem Parameter -q [–quiet] wird die Ausgabe des Fortschrittes über den stderr-Kanal unterdrückt, so das nur noch Fehler angezeigt werden und nicht mehr bei welcher Revision grad der Dump ist.

Da ich mich nach dem lesen gefragt habe für was dann svndumpfilter benötigt wird hier ein kleines Beispiel dazu:

svnadmin dump /repos/pfad > KomplettesSVN.dmp
cat KomplettesSVN.dmp | svndumpfilter include GesuchtesProjekt > NurGesuchtesProjekt.dmp
svnadmin load /repos/NurGesuchtes > NurGesuchtesProjekt.dmp

Hiermit wird zuerst wieder das komplette Repositority rausgeholt, dann wird ein einzelnes Projekt aus dem kompletten Dump extrahiert (GesuchtesProjekt) und nur dieses dann in ein neues Repositority geladen.

Noch ein Paar informatione zum svndumpfilter:

–drop-empty-revs

Überhaupt keine leeren Revisionen erzeugen – einfach auslassen.

–renumber-revs

Falls leere Revisionen ausgelassen werden (mit der Option –drop-empty-revs), die Nummern der übrig gebliebenen Revisionen ändern, so dass keine Lücken in der Nummernfolge auftreten.

–preserve-revpos

Falls leere Revisionen nicht ausgelassen werden, die Eigenschaften der leeren Revisionen bewahren (Protokolleintrag, Autor, Datum, Propertys usw.). Sonst beinhalten leere Revisionen lediglich den Zeitstempel und einen erzeugten Protokolleintrag, der darauf hinweist, dass diese Revision von svndumpfilter geleert wurde.

Und wenn jetzt noch gewünscht wird das die einzelnen Repos ihre Ordnerstrukture verändern, dann muss man leider die Dump-Datei per Hand anfassen. Zum einen muss man „Node-path“- sowie die „Node-copyfrom-path“-Angaben verbiegen. Beispiel für VIM aufruf:

:%s/Node-path: [MyProj]\//Node-path: /
:%s/Node-copyfrom-path: [MyProj]\//Node-copyfrom-path: /

Und das Anlegen des Haupt-Ordners sollte entfernt werden, dafür muss man noch so einen Eintrag schauen (Und alles, auch das PROPS-END, entfernen. Vorsicht aber des vorgehende PROPS-END stehen lassen):

Node-path: [MyProj]
Node-action: add
Node-kind: dir
Prop-content-length: 10
Content-length: 10

PROPS-END

Links die geholfen haben:
Migration a Repositority
SVN-Handbuch

Dieser Beitrag wurde unter Programmieren veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.