Eine Änderung, die ein Konflikt ist, wenn 2 Personen beide die gleiche Datei in einer solchen Weise geändert haben, dass die zwei Änderungen nicht automatisch behoben werden können.
1) Beginnen wir mit einem Beispiel für eine konfliktfreie Zusammenführung.
Original-Datei
line1
line2
line3
Person A ändert es dazu:
line1CHANGED
line2
line3
Person B es dies ändert:
line1
line2CHANGED
line3
Wenn diese werden in beide geprüft und zusammen Es gibt keinen Konflikt, weil es leicht auflösen kann, um diese endgültige Datei zu erzeugen:
line1CHANGED
line2CHANGED
line3
Subversion wird dies automatisch als Zusammenführung behandeln.
2) Nun ein Beispiel für widersprüchliche Änderungen.
Original-Datei
line1
line2
line3
Person A es dazu ändert:
line1CHANGED_BY_A
line2
line3
Person B es dies ändert:
line1CHANGED_BY_B
line2
line3
Dies kann nicht automatisch zusammengeführt werden, Es ist also ein Konflikt. Sie müssen das Problem lösen, indem Sie entweder die Änderung von Person A oder die Änderung von Person B akzeptieren. In diesem Fall warnt Subversion Sie vor Konflikten und erfordert eine Entscheidung von Ihnen, wie Sie diese beheben können.
3) Schließlich können Sie widersprüchliche und nicht widersprüchliche Änderungen innerhalb der gleichen Revision haben.
Original-Datei
line1
line2
line3
Person A ändert es dazu:
line1CHANGED_BY_A
line2ALSO_CHANGED_BY_A
line3
Person B es dies ändert:
line1CHANGED_BY_B
line2
line3ALSO_CHANGED_BY_B
Jetzt, mit diesem Beispiel die beiden Menschen haben die Datei geändert, und es gibt eine widersprüchliche Änderung in Zeile 1, die aufgelöst werden muss, aber Zeile s 2 & 3 sind nicht widersprüchliche Änderungen und können automatisch gelöst werden.
Sie können dies auf verschiedene Arten beheben.
Zunächst können Sie entweder die Datei A oder B vollständig akzeptieren und die andere Datei verwerfen. Dies würde dazu führen, dass die anderen Personen keine widersprüchlichen Änderungen verlieren. Sprich: Sie wählen vollständig lösen A, Ihre endgültige Datei wäre:
line1CHANGED_BY_A
line2ALSO_CHANGED_BY_A
line3
(Genau A der Datei und alle Änderungen von B verworfen)
Zweitens Sie nur die widersprüchlichen Änderungen lösen können, und behalten Sie immer noch alle nicht-widersprüchlichen Änderungen bei.In diesem Fall würden Sie entweder die Änderung von A oder B für die erste Zeile wählen und trotzdem beide Änderungen der anderen Zeile von beiden Personen erhalten. Also, sagen wir zum Beispiel Sie wählen, um Konflikte zu lösen A, Ihre endgültige Datei wäre:
line1CHANGED_BY_A
line2ALSO_CHANGED_BY_A
line3ALSO_CHANGED_BY_B
Alternative Sie Tools wie KDiff verwenden können, die separat von jedem Konflikt Unterstützung der Überprüfung (denn natürlich können Sie mutliple Änderungen haben, widersprüchlich und nicht konfligierend, innerhalb der gleichen Datei), die Ihnen erlauben wird, verschiedene Methoden der Auflösung für jedes zu wählen.
Wenn Sie Probleme haben, das Zusammenführen mit den Befehlszeilentools zu verstehen, empfehle ich Ihnen, KDiff (oder ein anderes GUI merge/diff-Tool) zu betrachten, da sie die Dateien nebeneinander (zusammen mit dem Original) anzeigen erlauben Ihnen, visuell zu sehen, was jede Lösungsaktion tun würde.
Vielen Dank für Ihre ausführliche Antwort! Ich konnte deine Beispiele in einem Svn-Projekt reproduzieren und ich verstehe endlich den Unterschied zwischen den Minenkonflikt- und Minenkommandokommandos! =) –