Was ist der beste Weg, um einen der Zweige eines Subversion-Repositorys zum neuen Trunk zu machen?
Das gesamte System wurde grundlegend umgeschrieben: Dinge wurden verschoben, umgeschrieben, ersetzt, entfernt, umbenannt usw. Der umgeschriebene Code wurde getestet und ist bereit, den alten Trunk zu ersetzen.
Grundsätzlich ist die alte Hauptleitung (Trunk 5) markiert und endet hier. Der umgeschriebene Zweig (Zweig 6) soll die neue Hauptleitung (Trunk 7) werden:
Amtsleitung (1) -> Amtsleitung (2) -> Amtsleitung (5) -> × + -> neue Amtsleitung (7) \ \ | Gabel verschmelzen ??? \ \ | + -> Zweig (3) -> Zweig (4) -> Zweig (6) - +
Alle laufenden Änderungen gegenüber dem alten "Trunk" sind bereits in der "Rewritten Branch" enthalten.
Wie kann ich das machen?
quelle
Ich bin damit einverstanden, den Befehl svn move zu verwenden, um dieses Ziel zu erreichen.
Ich weiß, dass andere hier denken, dass es ungewöhnlich ist, aber ich mache es gerne so. Wenn ich einen Feature-Zweig habe und bereit bin, ihn mit einem Trunk zusammenzuführen, der ebenfalls erheblich geändert wurde, werde ich ihn mit einem neuen Zweig zusammenführen, der normalerweise den Namen hat
<FeatureBranchName>-Merged
. Dann löse ich Konflikte und teste den zusammengeführten Code. Sobald dies abgeschlossen ist, verschiebe ich den Trunk in den Tags-Ordner, damit ich nichts verliere. Zuletzt bewege ich meine<FeatureBranchName>-Merged
zum Kofferraum.Außerdem ziehe ich es vor, die Arbeitskopie beim Verschieben zu vermeiden. Hier sind Beispiele für die Befehle:
Hinweis: Ich benutze 1.5
quelle
Ich habe mir dieses Problem erst kürzlich angesehen und die Lösung, mit der ich sehr zufrieden war, war die Leistung
svn merge --ignore-ancestry trunk-url branch-url
auf der Arbeitskopie meines Kofferraums.
Dies versucht nicht, Änderungen auf historische Weise anzuwenden (Änderungen im Trunk beizubehalten). Es "wendet einfach den Unterschied an" zwischen dem Stamm und dem Zweig. Dies führt zu keinen Konflikten für Ihre Benutzer in den Dateien, die nicht geändert wurden. Sie verlieren jedoch Ihre historischen Informationen aus dem Zweig, aber das passiert, wenn Sie trotzdem eine Zusammenführung durchführen.
quelle
Empfehlen Sie, diese Änderungen über das Repository-Browser-Tool vorzunehmen.
Der Versuch, große Lösch- und Verschiebevorgänge über die Arbeitskopie auszuführen, ist eine hervorragende Möglichkeit, die Arbeitskopie zu beenden. Wenn Sie gezwungen sind, die Arbeitskopie zu verwenden, führen Sie nach jedem Lösch- oder Verschiebevorgang inkrementelle Festschreibungen durch und aktualisieren Sie Ihre Arbeitskopie nach jeder Festschreibung.
quelle
Wenn Sie den Zweig zum neuen Trunk machen möchten (dh) alle Änderungen im Trunk entfernen möchten, die seit dem Erstellen des Zweigs vorgenommen wurden, können Sie 1. einen Zweig des Trunks erstellen (zu Sicherungszwecken) 2. "Änderungen rückgängig machen "auf dem Trunk (wählen Sie alle Revisionen aus, nachdem der Zweig erstellt wurde 3. Führen Sie den Zweig wieder zum Trunk zusammen.
Die Geschichte sollte so bleiben.
Grüße, Roger
quelle
@ Aaron Digulla- und @ kementeus-Lösungen sind funktionsfähig. Bei Subversion 1.4-Repositorys können Kopier- / Verschiebevorgänge die zukünftige Migration in eine andere Repository-Struktur oder das Aufteilen von Repositorys erschweren.
Ich glaube, dass die Verbesserungen von 1.5 eine bessere Auflösung des Verschiebungs- / Kopierverlaufs beinhalten, sodass dies für ein 1.5-Repository wahrscheinlich kein Problem darstellt.
Für ein 1.4-Repository würde ich empfehlen , die Bewegung des vorhandenen Trunks an anderer Stelle zu verwenden
svnadmin dump
undsvndumpfilter
auszuführen und dann den Zweig mit demselben Mechanismus in den Trunk zu verschieben. Laden Sie die beiden Dumpfiles in ein Test-Repository, überprüfen Sie sie und verschieben Sie sie in die Produktion.Sichern Sie natürlich Ihr vorhandenes Repository, bevor Sie beginnen.
Dies bewahrt den Verlauf, ohne das Verschieben / Kopieren explizit aufzuzeichnen, und erleichtert die zukünftige Neuorganisation, den Erhalt des Verlaufs.
Bearbeiten: Wie angefordert, die Dokumentation des 1.4-Verhaltens aus dem 1.4 Red-Bean-Buch Filtering Repository History
Dies gilt für Migrationen / Reorganisationen mit
svndumpfilter
. Es gibt Zeiten, in denen ein wenig zusätzliche Arbeit später viel zusätzliche Arbeit einsparen kann und durch die einfache Verwendungsvndumpfilter
für zukünftige Migrationen / Reorganisationen das Risiko bei relativ geringen Kosten verringert wird.quelle
Die obigen Antworten funktionieren zwar, sind jedoch keine bewährten Methoden. Der neueste SVN-Server- und Client-Track wird für Sie zusammengeführt. Svn weiß also, welche Revisionen Sie von wo zu einem Zweig zusammengeführt haben. Dies ist sehr hilfreich, wenn Sie einen Zweig auf dem neuesten Stand halten und ihn dann wieder in den Stamm einbinden.
Unabhängig davon, welche Version von Subversion Sie verwenden, gibt es eine bewährte Methode, um Änderungen in einem Zweig wieder in den Trunk zu übertragen. Dies wird im Subversion-Handbuch beschrieben: Versionskontrolle mit Subversion, Kapitel 4. Verzweigen und Zusammenführen, Synchronisieren einer Verzweigung .
quelle
Es ist eine wirklich seltsame / ungewöhnliche Konfiguration in SVN, auch wenn ich denke, dass es überhaupt keine "gute Praxis" ist. Ich denke, Sie könnten so etwas tun:
Viel Glück
quelle