Schildkröte SVN: Lösen Sie Konflikte mit "ihnen". Was heißt das?

75

Kann jemand bitte den Unterschied zwischen den folgenden zwei Optionen von Tortoise SVN für in Konflikt stehende Dateien erklären:

  • Lösen Sie Konflikte mit "ihnen".
  • Lösen Sie Konflikte mit 'mir'.

Als Randnotiz. Warum um alles in der Welt hat noch niemand über diese verwirrende Verwendung der Terminologie als Fehler berichtet?

Muhammad Hasan Khan
quelle
4
Die Verwirrung ist wahrscheinlich darauf zurückzuführen, dass sie den Kontext von "ihnen" und "mir" nicht verstanden haben
Igor Pashchuk,
17
Ich bin wegen dieser Verwirrung hierher gekommen, wenn auch nicht in Tortise SVN, sondern von der Kommandozeile aus. Bei der Aktualisierung in der Befehlszeile wird die Option als "ihr Konflikt" angegeben. Dies ist nicht eindeutig, ob durch Auswahl der Option der Konflikt in einem Konfliktzustand bleibt oder behoben wird.
Pohl
3
Es ist noch verwirrender, wenn Sie zusammenführen, und es wechselt die Terminologie zu "lokal" und "respository". Mir ist nicht das geringste klar, welches in diesem Fall welches ist.
JohnOpincar
7
Ich komme immer wieder auf diese Seite zurück. Warum sie nicht einfach sagten: "Bevorzugen Sie lokale Änderungen gegenüber Repository-Änderungen" und "Bevorzugen Sie Repository-Änderungen gegenüber lokalen" oder ähnliches, was logisch und leicht zu verstehen ist. Ich weiß, dass es etwas länger dauert, aber in diesem Fall ist weniger definitiv nicht mehr.
Komponente 10
3
Auf jeden Fall mehrdeutig. Überprüfen Sie den Zweig eines anderen und führen Sie die Änderungen eines von Ihnen vorgenommenen Zweigs in diesem Zweig zusammen. Sehen Sie, wie klar Ihre gegen meine ist.
Programmier Guy

Antworten:

55

Konflikt mit "ihnen" lösen bedeutet, dass SVN beim Einchecken von zwei Dateien mit widersprüchlichen Änderungen Ihre Änderungen verwirft und stattdessen die Änderung der anderen Personen verwendet.

Konflikt mit 'meins' lösen bedeutet, dass Sie deren Änderungen verwerfen und stattdessen Ihre Version der Datei verwenden.

Brandon
quelle
4
Schauen Sie sich das Bild an, das viel darüber erklärt: tortoisesvn.net/docs/release/TortoiseMerge_en/…
Stefan
3
Diese Antwort spricht die Zweideutigkeit zwischen ihnen und meiner überhaupt nicht an. Ich wurde gerade gebeten, Änderungen aus einem Zweig, an dem ich gearbeitet habe, in einem Zweig zusammenzuführen, an dem jemand anderes gearbeitet hat. In diesem Fall sind die Änderungen, die ich als "meine" betrachte, diejenigen aus meiner Branche. Wenn ich jedoch "meine" Änderungen akzeptiere, werde ich tatsächlich Änderungen aus meinem Zweig verwerfen.
Programmier Guy
Ich sehe minenirgendwo im Menü "Konflikt lösen mit ". Gibt es keine Möglichkeit sicherzustellen, dass meine Änderungen mit ihren Änderungen zusammengeführt werden?
SearchForKnowledge
1
Ja, ich verstehe diese Antwort nicht. Es gibt keine "andere Person"
bremst
42

Ich wollte die gesamte Liste zur weiteren Bezugnahme hinzufügen:

(e)  edit             - change merged file in an editor
(df) diff-full        - show all changes made to merged file
(r)  resolved         - accept merged version of file

(dc) display-conflict - show all conflicts (ignoring merged version)
(mc) mine-conflict    - accept my version for all conflicts (same)
(tc) theirs-conflict  - accept their version for all conflicts (same)

(mf) mine-full        - accept my version of entire file (even non-conflicts)
(tf) theirs-full      - accept their version of entire file (same)

(p)  postpone         - mark the conflict to be resolved later
(l)  launch           - launch external tool to resolve conflict
(s)  show all         - show this list
nerkn
quelle
33

Genau.

Mir scheint, es wäre klarer, wenn es heißt:

  • Lösung mithilfe des Repositorys (ihres)
  • Lösung mit Arbeitskopie (meine)
james2code
quelle
3
Meiner Meinung nach können die besten Antworten als Konflikte auftreten, ohne dass eine zweite Person beteiligt ist (z. B. bei Verwendung von Git Flow mit mehreren Zweigen).
Christoph
Was macht nun "als gelöst markieren"? benutzt es meine oder ihre?!
FIV
2
Es entfernt nur das Konfliktflag und verwendet den aktuellen Status der zusammengeführten Datei. Normalerweise würden Sie die Konflikte anzeigen und alle Probleme beheben und sie dann als gelöst markieren. Die beiden in dieser Frage behandelten Optionen sind Verknüpfungsoptionen zum Lösen von Konflikten, indem Sie nur Ihre Version oder die Version im Repo verwenden. Wenn Sie dies tun, wird es automatisch als gelöst festgelegt. Wenn Sie einen Konflikt manuell korrigieren, müssen Sie ihn als "gelöst" markieren.
James2code
7

Das Zusammenführen der SVN-Befehlszeile ist insbesondere beim Zusammenführen eines Zweigs in den Trunk verwirrend. "Meine Änderungen" habe ich in der Branche vorgenommen, aber das wäre laut SVN falsch . Um die Sache wirklich zu komplizieren, bezeichnet SVN die Pfade in der Befehlszeilenhilfe als SOURCE, TARGET und HEAD.

Hier ist die einfache Antwort , wenn Sie diese Zusammenführungsanweisung aus dem Verzeichnis C: \ Project1 \ Trunk ausführen

svn merge -r 60:68 C:\Project1\branches\UpdatesToProject1

"Mine" ist das Verzeichnis, in dem SVN ausgeführt wird (C: \ Project1 \ Trunk).

"Theirs" ist das Verzeichnis, in dem Sie zusammenführen und das Sie in der Befehlszeile angegeben haben (C: \ Project1 \ branch \ UpdatesToProject1).

Es wäre wirklich sehr schön, wenn SVN die Pfade angeben würde, auf die sich MINE und THEIRS beziehen.

K Kimble
quelle
2
Diese Antwort sollte höher sein. Wir verwenden Branch versus Trunk und es wird sehr verwirrend.
iank
6

BuzzAnn ist richtig. meins gegen ihre ist mehrdeutig, da das, was sich im Repository befindet, auch meins sein könnte. Die eindeutige Unterscheidung ist Repository gegen lokale Kopie .

Dave Sieving
quelle
1

Wenn Sie akzeptieren, dass das, was sich im Repository befindet, nicht mehr (ausschließlich) Ihnen gehört, sondern für alle Benutzer freigegeben wird, die Zugriff haben, ist dies möglicherweise klarer.

In diesem Kontext:

"ihre" bedeutet "der gemeinsam genutzte Code des Teams im Repository" "meine" bedeutet (meine) "Arbeitskopie" (wahrscheinlich auf einem lokalen Computer)

Also: "using its" ersetzt Ihre Arbeitskopie durch die freigegebene Kopie und verwirft Ihre Änderungen, die auf Ihrem lokalen Computer vorhanden sind. "using mine" entscheidet, dass der Code in Ihrer Arbeitskopie im Repository aufbewahrt werden soll, und verwirft, was sich derzeit im Repo befindet.

Schneehuhn
quelle