Konflikte lösen: Wie kann man "ihre" Änderungen automatisch akzeptieren?

97

Beim Zusammenführen widersprüchlicher Änderungen mit verwendet hg mergeMercurial eine Reihe von Markierungen in die Dateien, die in meiner Arbeitskopie wie folgt zusammengeführt werden sollen:

<<<<<<< local
  version = 0.2
=======
  version = 0.1
>>>>>>> other

Dann bearbeite ich manuell alle als U gekennzeichneten Dateien aus einer von erstellten Liste hg resolve --all -lund sage mercurial, dass ich sie durch aufgelöst habehg resolve -m file1 file2 file3 ...

In vielen Situationen möchte ich jedoch entweder meine oder nur ihre Änderungen an einigen widersprüchlichen Dateien akzeptieren. Ich denke darüber nach, zwei einfache sed / awk / welche Skripte auch immer zu erstellen accept-theirs.shund accept-my.shoder gibt es eine "richtige" Möglichkeit, dies zu tun?

Psihodelia
quelle

Antworten:

166

Verwenden

hg resolve -t internal:other --all

zu akzeptieren theirsund

hg resolve -t internal:local --all

akzeptieren yours

Noffls
quelle
Vielen Dank! Ich verstehe nicht, was @djc bedeutet, aber Ihre Lösung funktioniert wie ein Zauber.
Psihodelia
@psihodelia djc sagte so ziemlich das gleiche, versuchen Sie hg help merge-tools(mergetools ist ein Alias ​​in letzteren Versionen)
MGP
6
Als Randnotiz habe ich Folgendes aliasiert:[alias] mine = resolve -t internal:local theirs = resolve -t internal:other
Melvyn
1
Das sind drei Zeilen .hgrc, die für die Neulinge hinzugefügt werden müssen: [alias]dann mine = resolve -t internal:local, dann theirs = resolve -t internal:other. Danach können Sie hg mine some_file.pyoder hg theirs -a(für alle)
Tobia
1
Ab phab.mercurial-scm.org/D4379 müssen Sie möglicherweise auch die --re-mergeFlagge (z. B. hg resolve -t internal:other --re-merge --all)
Ethan Koenig
23

Versuche dies:

hg merge --tool 'internal:other'

Siehe auch hg help merge-toolsfür weitere Informationen.

djc
quelle
1
Oder resolvefür einzelne Dateien / Wiederherstellen. (Auch die Anführungszeichen internal:othersind unnötig.)
Chris Morgan