2008-08-18 8 views
6

Ich konvertiere von bestehenden CVS-Repository in SVN-Repository. CVS-Repository hat wenige Brances und ich möchte Zweige während der Konvertierung umbenennen.CVS zu SVN Konvertierung und Reorganisation von Zweigen

gewünschte Umwandlung ist wie folgt:

CVS branch   SVN branch 
HEAD  ->  branches/branchX 
branchA ->  trunk 
branchB ->  branches/branchB 
branchC ->  branches/branchC 

Das heißt, wird CVS HEAD ein normaler Zweig und CVS branchA wird SVN Stamm.

Sowohl CVS- als auch SVN-Repositories befinden sich auf demselben Linux-Computer.

Wie könnte dies getan werden?

Auch Konvertierung wo CVS branchA wird SVN trunk und alle anderen CVS-Zweige ignoriert werden, könnte ausreichen.

Antwort

8
Ich bin besonders daran interessiert, Commit-Geschichte zu bewahren. Wenn ich nach der Konvertierung Zweige in SVN umbenenne und verschiebe, wird der Verlauf beibehalten?

Ja. Subversion verfolgt auch Änderungen an der Verzeichnisstruktur, und der gesamte Versionsverlauf bleibt erhalten, selbst wenn eine Datei in der Baumstruktur verschoben wird.

Ich empfehle, das Repository mit cvs2svn zu konvertieren, einschließlich Verzweigungen und Tags. Sobald sich das Repository in Subversion befindet, können Sie die Zweige und Tags beliebig verschieben. Dadurch wird auch die Historie der eigentlichen Tags und Zweige beibehalten, was später in einem historischen Kontext interessant sein könnte.

cvs2svn erlaubt keine Umwandlung von Stamm zu einem Zweig oder Ast

so bewegend Dinge mit dem Stamm, wenn Sie zu svn konvertiert sind ist die beste:

+0

Ich benutze cvs2svn, aber ich möchte nur bestimmte Zweige und die HEAD konvertieren, aber cvs2svn nur "Exclude" -Funktion für Zweige, nicht "include". Also, wie konvertiere ich den HEAD mit einem weiteren Zweig? – Oded

+0

Ich denke du könntest alles löschen und dann svndumpfilter benutzen um alles herauszufiltern, was du nicht willst? –

+0

Ich glaube nicht, dass der Svndumpfilter nicht erwähnte Zweige entfernt. Kennen Sie eine andere Lösung? – Oded

1

Subversion-Zweige sind Verzeichnisse, so dass Sie die Zweige einfach verschieben können, nachdem der Import abgeschlossen ist und keine Historie verloren geht.

5

Es ist schon eine Weile her, seit ich eine CVS -> SVN-Konvertierung gemacht habe, und wahrscheinlich noch länger, seit ich eine mit einer nichttrivialen Verzweigungsstruktur gemacht habe. Da sich SVN relativ einfach in Verzeichnisbäumen bewegen kann, könnten Sie zuerst die gesamte Konvertierung durchführen und dann die Stamm-/Verzweigungsstruktur später vollständig innerhalb von SVN aussortieren.

Wenn Sie zu diesem Punkt kommen und innerhalb von SVN ganze Verzeichnisbäume bewegen, ist es wahrscheinlich das Beste, wenn Sie nach jedem Baumumbenennungs-/Verschiebungsschritt festschreiben. Nur etwas, das man im Kopf behalten sollte.

0

Ich bin besonders daran interessiert, Commit-Geschichte zu bewahren. Wenn ich nach der Konvertierung Zweige in SVN umbenenne und verschiebe, wird der Verlauf beibehalten?

1

Einige zusätzliche Informationen, um die akzeptierte Antwort zu unterstützen Weg zu gehen.

1

Es ist möglich, die Stamm- und Zweigverzeichnisse nach der Konvertierung zu verschieben, aber dies würde einen expliziten SVN-Commit nach der Konvertierung erfordern, der in Ihrem SVN-Verlauf verbleibt, wodurch die Geschichtsexploration etwas komplizierter wird.

Aber man kann in der Tat cvs2svn sagen, den Stamm und die Äste zu den SVN Pfaden zu speichern, die Sie mit der oder --symbol-hints=symbol-hints.txt Befehlszeilenoption wollen (wenn Sie eine Option für Ihre Conversion-Datei verwenden), um die SymbolHintsFileRule('symbol-hints.txt') Symbol Strategie Regel, wo symbol-hints.txt eine Datei Zeilen wie die folgend enthalten:

. .trunk. trunk branches/branchX . 
. branchX branch trunk . 

Bitte beachten Sie, dass einige Nachrichten verpflichten, die von cvs2svn (zum Beispiel für die Schaffung der Branche) automatisch generiert wird, werden die ursprünglichen Zweignamen nennen.

1

Obwohl das Verschieben von Zweigen nach der Konvertierung möglich ist, ist es möglicherweise besser, die Konfigurationsdatei cvs2svn so einzurichten, dass für jede Ihrer vorhandenen Zweige genau der gewünschte Name angegeben wird. Einer der Vorteile davon ist, dass FishEye die Ausgabe viel besser verstehen wird.

Verwandte Themen