Skip to content


SVN Unterverzeichnis von einem Repository in ein neues verschieben

Schon länger arbeite ich an einem C++ Projekt, das ich in meinem allgemeinen C++-Repository als Unterverzeichnis eingecheckt hatte. Jetzt hab ich mir eingebildet, dass ich das Projekt in einem eigenen SVN-Repository verwalten möchte. Doch wie? Google hilft natürlich ..

Nehmen wir an man hat ein Repository das folgendermassen aufgebaut ist:

/var/svn-repos/cpp

* dir1

* dir2

und man möchte nun dir2 in das neue Repository unter

/var/svn-repos/Project1

verschieben. Gar kein Problem mit svnadmin. Als erstes legt man wie gewohnt das neue SVN-Directory an:

svnadmin create –fs-type fsfs /var/svn-repos/Project1

Danach kommt das eigentliche Verschieben. Zuerst dumpen, danach einlesen.

Dump des alten Repository erstellen:

svnadmin dump /var/svn-repos/cpp/ | svndumpfilter include \

–drop-empty-revs –renumber-revs /dir2 > Project1.svndump

Mit svnadmin verwaltet man die SVN-Repositorys am Server. Die Option dump gibt den gesamten Inhalt des Repositorys, auch die Versionierungshistory, in einem speziellen Dump-Format aus. svndumpfilter filtert das Dump-File bei der Ausgabe nach verschiedenen Kriterien. In diesem speziellen Fall werden durch die Option include alle Knoten die nicht spezifiziert sind aus dem Dump-Datenstrom herausgefiltert, wodurch nur der gewünschte Inhalt im Dump-File ankommt. Mit der Option –drop-empty-revs werden alle, durch den Filter ignorierten, leeren Revisioneinträge ingnoriert, die Option –renumber-revs numeriert die noch vorhanden Revisions neu.

Zum Abschluss muss der SVN-Dump noch in das neue Repository eingelesen werden. Dies geschieht erneut mittels svnadmin:

svnadmin load /var/svn-repos/Project1 < Project1.svndump

Fertig.

  • Share/Bookmark

No related posts.

Posted in Linux.

Tagged with , .


One Response

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Markus says

    Sehr hilfreich, vielen Dank. Die Optionen bei svndumpfilter mussten bei mir mit zwei “–” versehen werden:

    svndumpfilter include -–drop-empty-revs -–renumber-revs …

    Außerdem wird der komplette Pfad innerhalb des Repositories ins Dump übernommen (z.B. “/trunk/dir1/datei.cpp” und ich musste noch “/trunk” von hand anlegen, sonst kam es zu einer Fehlermeldung bei “svadmin load …”

    svn mkdir /path/to/new/repo/trunk

    bzw.

    svn mkdir https://svn.new.repo.url/trunk

    Praktisch wäre es, wenn man den Pfad gleich im Dumpfile los würde. Aber svndumpfilter bietet hier wohl keine Option. Hat jemand eine Idee dazu?



Some HTML is OK

or, reply to this post via trackback.

You can add images to your comment by clicking here.

Security Code: