Zweig mit Stamm zusammenführen


119

Mit TortoiseSVN muss ich Änderungen vornehmen, die ich in einem Zweig vorgenommen habe, und sie dann mit Trunk zusammenführen.

Ich bin der einzige Entwickler in diesem Projekt, daher weiß ich, dass sich der Kofferraum nicht geändert hat. Ich lerne SVN, damit mein Team es schließlich verwenden kann.

Grundsätzlich möchte ich, dass mein Kofferraum genau wie der Zweig aussieht.

In der Pre-SVN-Welt kopierte ich einfach die Dateien in meinen Zweigordner, löschte die Dateien im Stammordner und kopierte dann den Zweig in den Stamm.

In TortoiseSVN, ich habe versucht Reintegrate a branch, Merge a range of revisionsund Merge two different trees. Nichts scheint tatsächlich den Kofferraum zu verändern. Ich habe auch versucht, oben auf dem Stamm zu verzweigen. Dies gibt mir einen Fehler, der besagt, dass der Trunk bereits vorhanden ist.

Antworten:


157

In deinem Fall:

  1. Wechseln Sie die Arbeitskopie zum Trunk (SVN-Switch)
  2. Führen Sie den Zweig in die Arbeitskopie ein (SVN Merge).
  3. Stellen Sie sicher, dass alles noch kompiliert und funktioniert
  4. Übernehmen Sie die Arbeitskopie (den Kofferraum)
  5. Erwägen Sie, den Zweig zu töten

In einer Teamumgebung würde ich vorschlagen, dass Sie zuerst die neuesten Änderungen aus dem Trunk in Ihrer Niederlassung zusammenführen, sicherstellen, dass alles kompiliert und funktioniert, und dann die obigen Schritte ausführen (was trivial ist, da Sie die Änderungen bereits getestet haben).


Aktualisieren

In Schritt 5 erwähne ich das Töten des Zweigs. Dies liegt daran, dass ein Zweig eines Features, der sich im Trunk befindet, als Teil des Trunks betrachtet werden sollte. In diesem Fall sollte der Zweig getötet werden, damit niemand weiter daran arbeitet. Wenn für diese Funktion größere Änderungen erforderlich sind, sollten Sie dafür einen neuen Zweig erstellen.

Die einzigen Zweige, die ich nicht töte, sind Wartungs- und Release-Zweige, es sei denn, ein bestimmtes Release wird nicht mehr unterstützt.

Unabhängig davon haben Sie immer Zugriff auf jede Revision. Das Beenden eines Zweigs wird nur verwendet, um zu verhindern, dass andere Entwickler sich auf einem toten Zweig entwickeln.


Der Kommentar, den Sie unter Schritt 5 hinzugefügt haben, könnte wahrscheinlich besser Schritt 1 sein? Wenn Sie im Dialogfeld "TortoiseSVN-Zusammenführung" die Option "Zweig neu integrieren" verwenden möchten, müssen Sie zuerst alle Änderungen aus dem Stamm (oder Basiszweig) zusammenführen.
jbvo

1
Ist der erste Schritt (Arbeitskopie auf Trunk umstellen) nur erforderlich, wenn keine separate Zweig- und Trunk-Arbeitskopie vorhanden ist?
Jeff B

1
Ich denke, ein wichtiges Detail, das hier fehlt, ist der Ordner, auf den Sie für jeden Schritt klicken, damit Sie den Kontext jedes Schritts kennen.
MacGyver

10

Ich denke in TortoiseSVN 1.8.5, Merge | Das Zusammenführen von zwei verschiedenen Bäumen sollte funktionieren. Wenn Sie einen Zweig / Tag wieder mit Trunk zusammenführen, besteht der Trick darin, dass die From-URL der Trunk und das To das Tag / der Zweig ist. Seltsam aber wahr.

Quelle: Zusammenführen

Bei Verzeichnissen, die sich nicht in Ihrer Arbeitskopie befinden, sondern sich im Tag / Zweig befinden, können Konfliktfehler auftreten. Akzeptieren Sie einfach den Konflikt und wiederholen Sie die Zusammenführung.


Nachdem Sie die Anweisungen auf der Website von tortoisesvn befolgt haben, stellen Sie nach dem Zusammenführen sicher, dass Sie den Trunk festschreiben, ohne etwas zu ändern. Ich habe versucht, einige Dinge zu deaktivieren, die ich nicht festschreiben wollte, was zu einer nicht rekursiven Festschreibungswarnung führte. Löschen Sie den Zweig auch, wie in den Anweisungen angegeben.
goku_da_master

6

Wechseln Sie zuerst Ihre Arbeitskopie in den Kofferraum. Führen Sie dann eine Reihe von Revisionen zusammen, vom Zweig bis zum Trunk. Sobald dieser Dialog abgeschlossen ist, stehen die Unterschiede aus, bis Änderungen in Ihrer Arbeitskopie von Trunk vorgenommen werden. Sie müssen sie festschreiben, als hätten Sie die Änderungen an Ihrer Arbeitskopie manuell vorgenommen.

In meiner Verwendung ist es typischer, den Kofferraum am Laufen zu halten und die Zweige während der Builds abzuspinnen. Die einzige Zusammenführung, die ich jemals durchführen muss, besteht darin, eine Fehlerbehebung aus dem Trunk zu entfernen und sie in den neuesten Build-Zweig zu stellen und diesen Zweig erneut freizugeben. Der einfachste Weg für mich, dies zu tun, da das Zusammenführen, wie Sie festgestellt haben, bestenfalls ungeschickt ist. Ist es, den neuesten Zweig und den Trunk auf meinem Computer auszuchecken und die Dateien buchstäblich von Trunk zu Zweig zu kopieren und beide einzuchecken.


2
Beim "Kopieren" der Dateien ist große Vorsicht geboten. Verwenden Sie so etwas wie den Export von TortoiseSVN, um zu vermeiden, dass die versteckten SVN-Verzeichnisse beschädigt werden.
Milimetric

3

Ich verwende TortoiseSVN 1.9.3, Build 27038.

Führen Sie die folgenden Schritte aus, um den Zweig mit dem Trunk zusammenzuführen.

1) Klicken Sie mit der rechten Maustaste auf die Trunk-Arbeitskopie und wählen Sie die folgende Option.

Geben Sie hier die Bildbeschreibung ein

2) Wenn der Zweig in den Trunk übergeht, wählen Sie die zweite Option wie unten gezeigt und klicken Sie auf Weiter

Geben Sie hier die Bildbeschreibung ein

3) Geben Sie im Feld Von: die vollständige Ordner-URL des Trunks ein. Dies mag falsch klingen, aber denken Sie daran, dass der Trunk der Startpunkt ist, zu dem Sie die Zweigänderungen hinzufügen möchten. Geben Sie im Feld An: die vollständige Ordner-URL des Feature-Zweigs ein.

Geben Sie hier die Bildbeschreibung ein

4) Klicken Sie auf Weiter und führen Sie die Testzusammenführung durch

Geben Sie hier die Bildbeschreibung ein

5) Wenn die Testzusammenführung erfolgreich ist, klicken Sie auf die Schaltfläche Zusammenführen.

6) Sobald die Zusammenführung erfolgreich ist, werden die Änderungen auf dem Trunk festgeschrieben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.