Jak przerwać scalanie w Mercurial?

85

Pomyślałem o fuzji. Chcę cofnąć, a następnie spróbować ponownie.
Czy istnieje sposób na cofnięcie scalenia, zanim zostanie ono zatwierdzone?

hg revertnie robi tego, co bym chciał, tylko przywraca tekst plików. Mercurial przerywa moją drugą próbę scalenia i skarży się, że oryginalne scalanie jest nadal niezakończone.

Czy istnieje sposób na cofnięcie scalenia po hg mergepoleceniu, ale przed jego zatwierdzeniem?

deft_code
źródło
Możliwy duplikat Jak porzucić scalanie HG?
Rodrigue

Odpowiedzi:

106

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

Wszelaki
źródło
Prosty, wydajny i moim zdaniem najlepszy sposób na zrobienie tego! : D
Eric-Karl
@JonL. - Tak, --cleanto synonim -C. Nie jestem pewien, do którego zestawu zmian .będzie się odnosić, ale zawsze będzie to jeden z dwóch połączonych zestawów zmian.
Omnifarious
3
@Omnifarious, czyszczenie .powinno wyczyścić do dowolnej wersji, w której byłeś przed zainicjowaniem scalania. Więc jeśli byłeś na r42, próbowałeś połączyć się z r43, nie powiodło się, wyczyszczono, byłbyś z powrotem na nieskazitelnym r42.
Jon L.
2
hg update --cleandziała, jak .wydaje się być domyślną wartością domyślną - nie jest to jednak jawnie udokumentowane .
Joel Purra
@JoelPurra: Znaczenie .w kontekście scalania jest raczej niejednoznaczne.
Omnifarious
39

Po wykonaniu tej czynności hg merge, ale wcześniej hg commit, kopia robocza ma dwóch rodziców: pierwszy element nadrzędny to zestaw zmian, do którego zostałeś zaktualizowany przed scaleniem, a drugi element nadrzędny to zestaw zmian, z którym scalasz. Mercurial nie pozwoli Ci na to hg mergeponownie, o ile kopia robocza ma dwoje rodziców.

Masz dwie możliwości postępowania:

  1. Jeśli chcesz przerwać scalanie i wrócić do początku, zrób to

    hg update -C .
    

    Spowoduje to zaktualizowanie kopii roboczej, aby była zgodna z pierwszym rodzicem: .zawsze oznacza pierwszego rodzica kopii roboczej.

  2. Jeśli chcesz ponownie scalić niektóre pliki, zrób to

    hg resolve fileA fileB
    

    Spowoduje to ponowne uruchomienie narzędzi scalania, tak jak poprzednio hg merge. Polecenie rozwiązywanie jest dobre, jeśli okaże się, hg mergeże narzędzia do scalania są źle skonfigurowane: napraw konfigurację i uruchom hg resolve --all. Możesz uruchomić dowolną hg resolveliczbę razy, dopóki scalanie nie będzie satysfakcjonujące.

Martin Geisler
źródło