Frage

Ich konvertiere von einem vorhandenen CVS-Repository in ein SVN-Repository.Das CVS-Repository hat nur wenige Zweige und ich möchte die Zweige beim Konvertieren umbenennen.

Die gewünschte Konvertierung sieht so aus:

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

Das heißt, CVS HEAD wird zu einem normalen Zweig und CVS branchA wird zum SVN-Trunk.

Sowohl CVS- als auch SVN-Repositorys befinden sich auf demselben Linux-Rechner.

Wie könnte das geschehen?

Auch eine Konvertierung, bei der CVS-Zweig A zum SVN-Stamm wird und alle anderen CVS-Zweige ignoriert werden, könnte ausreichend sein.

War es hilfreich?

Lösung

Ich interessiere mich besonders für die Bewahrung der Commit-Historie.Bleibt der Verlauf erhalten, wenn ich Zweige in SVN nach der Konvertierung umbenenne und verschiebe?

Ja.Subversion verfolgt außerdem Änderungen an der Verzeichnisstruktur und der gesamte Versionsverlauf bleibt erhalten, selbst wenn eine Datei im Baum verschoben wird.

Ich empfehle, das Repository mit zu konvertieren cvs2svn, einschließlich Zweige und Tags.Sobald sich das Repository in Subversion befindet, können Sie die Zweige und Tags beliebig verschieben.Dadurch bleibt auch der Verlauf der tatsächlichen Tags und Zweige erhalten, die umbenannt werden, was später im historischen Kontext interessant sein kann.

Andere Tipps

Es ist schon eine Weile her, seit ich eine CVS -> SVN-Konvertierung durchgeführt habe, und wahrscheinlich sogar noch länger, seit ich eine mit einer nicht trivialen Zweigstruktur durchgeführt habe.Da sich SVN relativ einfach in Verzeichnisbäumen bewegen kann, können Sie zuerst die gesamte Konvertierung durchführen und dann später die Stamm-/Zweigstruktur vollständig in SVN sortieren.

Wenn Sie an diesem Punkt angelangt sind und ganze Verzeichnisbäume innerhalb von SVN verschieben, ist es wahrscheinlich am besten, wenn Sie nach jedem Schritt zum Umbenennen/Verschieben des Baums einen Commit ausführen.Nur etwas, das man im Hinterkopf behalten sollte.

Subversion-Zweige sind Verzeichnisse, sodass Sie die Zweige nach Abschluss des Imports einfach verschieben können, ohne dass der Verlauf verloren geht.

Einige zusätzliche Informationen zur Unterstützung der akzeptierten Antwort:

cvs2svn erlaubt keine Konvertierung vom Stamm in einen Zweig oder vom Zweig in den Stamm

Daher ist es am besten, Dinge zu verschieben, sobald Sie auf SVN konvertiert sind.

Es ist möglich, die Stamm- und Zweigverzeichnisse nach der Konvertierung zu verschieben. Dies würde jedoch einen expliziten SVN-Commit nach der Konvertierung erfordern, der in Ihrem SVN-Verlauf verbleibt, was die Erkundung des Verlaufs etwas komplizierter macht.

Aber Sie können cvs2svn tatsächlich anweisen, den Stamm und die Zweige zu den gewünschten SVN-Pfaden zu speichern, indem Sie die verwenden --symbol-hints=symbol-hints.txt Befehlszeilenoption oder (wenn Sie eine Optionsdatei für Ihre Konvertierung verwenden) die SymbolHintsFileRule('symbol-hints.txt') Symbolstrategieregel, wo symbol-hints.txt ist eine Datei, die Zeilen wie die folgenden enthält:

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

Bitte beachten Sie, dass einige Commit-Nachrichten, die von cvs2svn automatisch generiert werden (z. B. für die Erstellung des Zweigs), den ursprünglichen Zweignamen erwähnen.

Obwohl das Verschieben zwischen den Zweigen nach Abschluss der Konvertierung möglich ist, ist es möglicherweise besser, die cvs2svn-Konfigurationsdatei so einzurichten, dass sie genau den Namen angibt, den Sie für jeden Ihrer vorhandenen Zweige wünschen.Einer der Vorteile davon besteht darin, dass FishEye die Ausgabe viel besser versteht.

Ich interessiere mich besonders für die Bewahrung der Commit-Historie.Bleibt der Verlauf erhalten, wenn ich Zweige in SVN nach der Konvertierung umbenenne und verschiebe?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top