Wie füge ich mit TortoiseSVN Änderungen vom Stamm zu einem Zweig und umgekehrt zusammen?

132

Ich habe mich über das Verzweigen / Zusammenführen mit Subversion 1.5 unter Verwendung des hervorragenden und kostenlosen Versionskontrollbuchs mit Subversion informiert. Ich glaube, ich verstehe, wie man den Subversion-Befehlszeilenclient verwendet, um die Aktionen auszuführen, die ich am häufigsten benötige:

Zweig mit Änderungen von Trunk aktualisieren

Führen Sie im Arbeitsverzeichnis des Zweigs Folgendes aus:

svn merge http://svn.myurl.com/proj/trunk

Zweig in Stamm zusammenführen

Führen Sie im Arbeitsverzeichnis des Trunks Folgendes aus:

svn merge - reintegrate http://svn.myurl.com/proj/branches/mybranch

Wir verwenden jedoch TortoiseSVN 1.5 als Schnittstelle zu Subversion. Ich würde gerne wissen, wie diese Operationen mit TortoiseSVN am besten durchgeführt werden können. Der neue Dialog bietet drei verschiedene Optionen im Hauptmenü.

  1. Führen Sie eine Reihe von Revisionen zusammen
  2. Integrieren Sie einen Zweig erneut
  3. Füge zwei verschiedene Bäume zusammen

Soweit ich das beurteilen kann, führt TortoiseSVN svn immer mit der folgenden Syntax aus.

svn merge [--dry-run] --force From_URL @ revN To_URL @ revM PATH

Darüber hinaus schlägt die Wiedereingliederung eines Zweigs häufig mit der Meldung fehl, dass einige Ziele nicht zusammengeführt wurden und daher nicht fortgesetzt werden können. Daher musste ich Option 3 verwenden.

Meine Fragen sind:

  1. Wie verwende ich TortoiseSVN 1.5, um Änderungen vom Stamm zu einem Zweig zusammenzuführen?
  2. Wie verwende ich TortoiseSVN 1.5, um den Zweig mit und ohne die Reintegrationsmethode mit dem Stamm zusammenzuführen?
  3. Welche der oben genannten Optionen sollte ich für jede verwenden und warum?

BEARBEITEN

Durch "Trockenlauf" -Tests habe ich festgestellt, dass die Befehlszeilen-Subversion-Operation

svn merge http://svn.myurl.com/proj/trunk

ist analog zu Option 1 (Zusammenführen eines Revisionsbereichs) in TortoiseSVN, solange ich den Revisionsbereich leer lasse.

Ryan Taylor
quelle
Die Links wurden nicht gefunden! = /
Leonardo Costa

Antworten:

28

Das Verhalten hängt davon ab, welche Version Ihr Repository hat. Subversion 1.5 erlaubt 4 Arten der Zusammenführung:

  1. zusammenführen sourceURL1 [@N] sourceURL2 [@M] [WCPATH]
  2. Quelle zusammenführenWCPATH1 @ N QuelleWCPATH2 @ M [WCPATH]
  3. füge [-c M [, N ...] | zusammen -r N: M ...] QUELLE [@REV] [WCPATH]
  4. zusammenführen - SOURCE [@REV] [WCPATH] reintegrieren]

Subversion vor 1.5 erlaubte nur die ersten 2 Formate.

Technisch gesehen können Sie alle Zusammenführungen mit den ersten beiden Methoden durchführen, aber die letzten beiden aktivieren die Zusammenführungsverfolgung von Subversion 1.5.

Die Optionen von TortoiseSVN führen einen Bereich oder Revisionszuordnungen zu Methode 3 zusammen, wenn Ihr Repository 1,5+ ist, oder zu Methode 1, wenn Ihr Repository älter ist.

Wenn Sie Features zu einem Release- / Wartungszweig zusammenführen, sollten Sie den Befehl 'Eine Reihe von Revisionen zusammenführen' verwenden.

Nur wenn Sie alle Funktionen eines Zweigs wieder mit einem übergeordneten Zweig (normalerweise Trunk) zusammenführen möchten, sollten Sie die Verwendung von "Zweig wieder integrieren" prüfen.

Und der letzte Befehl - zwei verschiedene Bäume zusammenführen - ist nur dann nützlich, wenn Sie das normale Verzweigungsverhalten verlassen möchten. (ZB Vergleichen verschiedener Releases und anschließendes Zusammenführen des Unterschieds zu einem weiteren Zweig)

Bert Huijben
quelle
mir jemand helfen könnte bitte mit stackoverflow.com/questions/51657636/... . Dies ist eine wichtige Frage für unser Team, wir brauchen einige Ideen dazu.
Ankur
249

Ich konnte den anderen Antworten nicht richtig folgen, hier ist eher ein Dummies-Leitfaden ...

Sie können dies entweder so trunk -> branchoder so tun branch -> trunk. Ich trunk -> branchbehebe dort immer zuerst Konflikte und füge sie dann zusammen branch -> trunk.

Trunk in einen Zweig / Tag einbinden

  1. Kasse des Zweigs / Tags
  2. Klicken Sie mit der rechten Maustaste auf die Wurzel des Zweigs | Schildkröte SVN | Zusammenführen ...
  3. Zusammenführungstyp: Zusammenführen einer Reihe von Revisionen | Weiter klicken' Geben Sie hier die Bildbeschreibung ein
  4. Revisionsbereich zusammenführen: Wählen Sie die URL des Trunk-Verzeichnisses aus, das Sie in den Zweig / Tag kopiert haben. Geben Sie die zu verschmelzenden Revisionen ein oder lassen Sie das Feld leer, um alle Revisionen zusammenzuführen Weiter klicken' Geben Sie hier die Bildbeschreibung ein
  5. Zusammenführungsoptionen: Ich habe diese nur als Standard | belassen Klicken Sie auf "Zusammenführen". Geben Sie hier die Bildbeschreibung ein
  6. Dadurch werden die Revisionen in den ausgecheckten Zweig / Tag eingefügt
  7. Übernehmen Sie dann die zusammengeführten Änderungen in den Zweig / das Tag
icc97
quelle
4
Ich habe "Revisionsbereich zum Zusammenführen" weggelassen und eine "Testzusammenführung" durchgeführt. Es war das, was ich brauchte: Der Bereich wurde automatisch für mich festgelegt (vom Zeitpunkt der Verzweigung bis zur letzten Überarbeitung der Verzweigung)
Lian
Tolle Antwort - prägnant und leicht zu folgen. Es hat bei mir funktioniert, aber als ich nur eine einzelne Konfigurationsdatei zusammenführen wollte, musste ich es aus irgendeinem Grund zweimal tun. Jetzt ist alles gut. Prost
Flügelspieler
@Lian Ich habe das Gleiche getan, um vom Stamm zum Zweig zu verschmelzen. Lassen Sie den Revisionsbereich leer, wenn die neueste Version der Dateien aus dem Trunk mit den Zweigdateien zusammengeführt werden soll.
Flügelspieler
2
Die aktuelle Version von Tortoise SVN bietet jetzt die Option, alle Revisionen zusammenzuführen, anstatt den Revisionsbereich in Schritt 4 leer zu lassen.
The Unknown Dev
1
@Onkar Einige Konflikte werden fast immer auftreten. Wenn Sie zwei Zweige haben, z. B. trunkund branch, stellen Sie sicher, dass Sie alle Änderungen von trunkbis branchso schnell wie möglich zusammenführen, um Konflikte so weit wie möglich zu vermeiden. Dies bedeutet , dass , wenn Sie verschmelzen branchzu trunksollte es keine Konflikte geben.
icc97
12

Sie sollten "Revisionsbereich zusammenführen" verwenden.

Um Änderungen vom Trunk zu einem Zweig zusammenzuführen, wählen Sie in der Zweigarbeitskopie "Revisionsbereich zusammenführen" und geben Sie die Trunk-URL sowie die zusammenzuführenden Start- und Endrevisionen ein.

Das Gleiche gilt in umgekehrter Weise, um einen Zweig im Stamm zusammenzuführen.

Informationen zum Flag --reintegrate finden Sie im Handbuch hier: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-reintegrate

Davide Gualano
quelle
1

Schauen Sie sich svnmerge.py an . Es ist eine Befehlszeile, kann von TortoiseSVN nicht aufgerufen werden, ist aber leistungsfähiger. Aus den FAQ :

Mit der herkömmlichen Subversion können Sie Änderungen zusammenführen, aber sie "merken" sich nicht, was Sie bereits zusammengeführt haben. Es bietet auch keine bequeme Möglichkeit, einen Änderungssatz von der Zusammenführung auszuschließen. svnmerge.py automatisiert einen Teil der Arbeit und vereinfacht sie. Svnmerge erstellt auch eine Festschreibungsnachricht mit den Protokollnachrichten aller zusammengeführten Elemente.

Liudvikas Bukys
quelle
6
svnmerge.py wurde auf Subversion 1.4 und früher entwickelt. Mit Subversion 1.5 wurde das Merge-Tracking im Kernprodukt eingeführt.
Bert Huijben
0

Klicken Sie bei gedrückter Umschalttaste mit der rechten Maustaste auf den Ordner und wählen Sie TortoiseSVN -> Alle zusammenführen

Denis
quelle