8 Stimmen

Wie kann ich einen Teilbaum aus meinem SVN-Repository in ein neues extrahieren?

Wir haben ein Subversion-Repository mit einem Verzeichnis, das ist:

  • Nicht wirklich in Bezug auf die Versionskontrolle über die Fähigkeiten von RCS hinaus erforderlich
  • Nicht in Verbindung mit irgendetwas anderem im Repository versioniert
  • Etwa sechsmal so oft geändert wie der Rest des Repositorys

Obwohl ich weiß, dass hohe Revisionsnummern kein Problem sind, möchte ich dennoch dieses eine Verzeichnis aus meinem Hauptrepository herausnehmen und idealerweise in ein zweites, neues verschieben.

Was ist der beste Prozess dafür? Falls es einen Unterschied macht, wird das SVN-Repository auf einer (... überprüfen... ) FreeBSD-Maschine gehosted.

Es ist erwähnenswert, dass ich zwar die Versionshistorie im neuen Repository behalten muss, es aber nicht notwendig ist, den Inhalt im alten zu löschen; er kann einfach dort bleiben, so weit es mich betrifft.

6voto

mghie Punkte 31618

Sie könnten svnadmin dump und svnadmin load verwenden, um ein neues Repository aus dem Original zu erstellen; kopieren Sie dann das Verzeichnis, das nicht wirklich in Ihr Schema passt, an einen besseren Ort und löschen Sie dann alles andere. Im ursprünglichen Repository würden Sie einfach das nicht passende Verzeichnis löschen. Auf diese Weise bleibt die gesamte Historie intakt, und Sie haben am Ende zwei Repositories.

Es gibt wahrscheinlich eine Möglichkeit, beide Repositories anschließend von den dann unbrauchbaren Teilen der Historie zu säubern (svndumpfilter), aber da Festplattenspeicher ziemlich günstig ist, halte ich dies nicht für notwendig. Wie auch immer, die SVN-Dokumentation enthält alle Informationen dazu.

1voto

Droj Punkte 3313

Der empfohlene Weg, dies zu tun, ist die Verwendung von svnadmin dump, dann Filtern der Dump-Datei mit dem svndumpfilter Werkzeug (siehe svnbook).

Zum Beispiel hatte ich ein Repository mit einem Top-Level-Verzeichnis namens 'Model', das ich in sein eigenes Repository verschieben wollte:

svnadmin dump my_orig_repo | svndumpfilter include --drop-empty-revs --renumber-revs Model >model_only.svndump
svnadmin load my_model_repo < model_only.svndump

Dadurch wird das neue Repository mit nur dem Model-Unterverzeichnis erstellt.

Um es aus dem Original-Repository zu entfernen, können Sie einfach ein svn rm ausführen. Dadurch wird es aus der neuesten Version des Repositorys entfernt und ist der einfachste Weg.

Aber Wenn das Model-Verzeichnis aus meinem Beispiel sehr groß war, hätte ich es vielleicht ganz aus dem Original entfernen wollen. Ich könnte dies tun, indem ich den Vorgang wiederholen würde, um eine weitere gefilterte svn-Dump-Datei zu erstellen, die es ausgeschlossen hat. Dann würde ich das Original durch das neue ersetzen, das das ausgeschlossene Verzeichnis nicht enthielt.

-1voto

David Z Punkte 121773

Ich würde das Verzeichnis exportieren (nicht auschecken), es in das neue Repository importieren und es dann aus dem Original löschen (natürlich mit einer Protokollmeldung, wohin es gegangen ist ;-).

Das mag der "beste" Weg sein, es zu tun...

-1voto

Andrew Szeto Punkte 1157

Ich weiß nicht, ob ich das richtig verstehe, aber es gibt eine gute Lösung dafür. Wenn Ihr ursprüngliches Repository unter svn://domain war und der Ordner, den Sie oft verwenden, "Ordner" heißt, glaube ich, dass Sie einfach den folgenden Befehl ausführen können: svn co svn://domain/Ordner, um nur diesen Ordner auszuchecken.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X