Wie kann man eine Fusion in mercurial abbrechen?

85

Ich habe eine Fusion vermasselt. Ich würde gerne zurückkehren und es dann erneut versuchen.
Gibt es eine Möglichkeit, eine Zusammenführung zurückzusetzen, bevor sie festgeschrieben wird?

hg revertmacht nicht das, was ich möchte, sondern setzt nur den Text der Dateien zurück. Mercurial bricht meinen zweiten Zusammenführungsversuch ab und beschwert sich, dass die ursprüngliche Zusammenführung noch nicht festgeschrieben ist.

Gibt es eine Möglichkeit, eine Zusammenführung nach einem hg mergeBefehl rückgängig zu machen , bevor dieser festgeschrieben wird?

deft_code
quelle
Mögliches Duplikat von Wie man eine hg-Zusammenführung aufgibt?
Rodrigue

Antworten:

105

hg update -C <one of the two merge changesets>

Allgegenwärtig
quelle
Einfach, effizient und meiner Meinung nach der beste Weg, dies zu tun! : D
Eric-Karl
@ JonL. - Ja, --cleanist ein Synonym für -C. Ich bin nicht sicher, auf welches Änderungsset .es sich beziehen wird, aber es wird immer eines der beiden zusammengeführten Änderungssätze sein.
Omnifarious
3
@Omnifarious, die Reinigung .sollte bis zu jeder Revision bereinigt werden, die Sie vor Beginn der Zusammenführung vorgenommen haben. Wenn Sie also bei r42 waren, versucht haben, mit r43 zu verschmelzen, fehlgeschlagen oder bereinigt sind, wären Sie wieder auf einem makellosen r42.
Jon L.
2
hg update --cleanfunktioniert, wie .es der implizite Standard zu sein scheint - es ist jedoch nicht explizit dokumentiert .
Joel Purra
@JoelPurra: Die Bedeutung von .im Zusammenhang mit einer Zusammenführung ist eher mehrdeutig.
Omnifarious
39

Nachdem Sie dies getan haben hg merge, aber zuvor hg commit, hat Ihre Arbeitskopie zwei übergeordnete Elemente: Das erste übergeordnete Element ist das Änderungsset, auf das Sie vor dem Zusammenführen aktualisiert wurden, und das zweite übergeordnete Element ist das Änderungsset, mit dem Sie zusammenführen. Mercurial lässt Sie nicht noch hg mergeeinmal zu, solange Ihre Arbeitskopie zwei Eltern hat.

Sie haben zwei Möglichkeiten, um fortzufahren:

  1. Wenn Sie die Zusammenführung abbrechen und zu Ihrem Ausgangspunkt zurückkehren möchten, tun Sie dies

    hg update -C .
    

    Dadurch wird die Arbeitskopie so aktualisiert, dass sie mit dem ersten übergeordneten Element übereinstimmt: Das .bezeichnet immer das erste übergeordnete Element der Arbeitskopie.

  2. Wenn Sie einige Dateien erneut zusammenführen möchten, tun Sie dies

    hg resolve fileA fileB
    

    Dadurch werden die Zusammenführungstools genauso neu gestartet wie damals hg merge. Der Befehl zum hg mergeAuflösen ist gut, wenn Sie zur Zeit feststellen, dass Ihre Zusammenführungstools schlecht konfiguriert sind: Korrigieren Sie die Konfiguration und führen Sie sie aus hg resolve --all. Sie können hg resolveso oft ausführen, wie Sie möchten, bis Sie mit der Zusammenführung zufrieden sind.

Martin Geisler
quelle