Jak zrezygnować z scalania HG?


131

Jestem nowy we współpracy z Mercurial. Moja sytuacja:

  • Inny programista zmienił rewizję 1 pliku, aby zastąpić wcięcia 4-spacji wcięciem 2-spacjami. (Tzn. Zmieniłem każdą linię.) Wywołaj to rev 2, zepchnij do zdalnego repozytorium.
  • Wprowadziłem istotne zmiany w wersji 1, wprowadzając różne zmiany kodu w moim lokalnym obszarze roboczym. Nazwij to rev 3.
  • Mam hg pulled i hg merged bez jasnego pojęcia, co się dzieje.
  • Konflikty są niezliczone i mało istotne.

Więc naprawdę żałuję, że nie zmieniłem lokalnego repozytorium na wcięcia o 2 spacjach przed scaleniem; wtedy scalenie będzie trywialne (przypuszczam). Ale nie mogę się cofnąć. Myślę, że muszę, hg update -r 3ale jest napisaneabort: outstanding uncommitted merges .

Jak mogę cofnąć scalenie, zmienić odstępy w lokalnym repozytorium i ponownie zainstalować?

Odpowiedzi:


128

Możesz odrzucić niezatwierdzone zmiany za pomocą flagi -C (lub --clean):

hg update -C -r 3

UWAGA: wszystko, co nie zostało popełnione, zniknie!

Następnie prawdopodobnie powinieneś użyć jakiegoś narzędzia do formatowania kodu, aby wykonać całą operację lub przynajmniej znaleźć i zastąpić wyrażeniami regularnymi. Coś tak prostego, jak zastąpienie tego, co pasuje ^____(użyj 4 spacji zamiast podkreślenia), __(2 spacje), powtórzone kilka razy (chyba że masz niesamowicie zagnieżdżony kod) powinno działać.


Oh dziękuję. Musiałeś dobrze odpowiedzieć, kiedy sam to rozgryzłem. Jestem w M-x indent-regionemacsie , podobnie jak sztuczka z reindentem.
Grumdrig

6
Warto zauważyć, że nieśledzone pliki nie zostaną usunięte.
djsutho,

134

BTW: jeśli po prostu cofniesz scalenie, które zrobiłeś, a 3 nie jest Twoim numerem wersji, możesz to zrobić:

hg update -C -r .

25
Dla każdego takiego jak ja, który na początku nie rozumiał, jak to działa: kropka .to skrót do poprzedniej wersji.
Jeroen Wiert Pluimers

1
świetna odpowiedź! powinno być najlepiej
Oleg Abrazhaev

1
@Thymine: From hg help updateI get: Jeśli nie określono żadnego zestawu zmian, zaktualizuj końcówkę bieżącej nazwanej gałęzi ... a wskazówka może nie zawsze być twoją bieżącą wersją, nad którą pracujesz. Jak dotąd nie testowałem ...
matematyka

1
Ach, to dobry szczegół, aby wiedzieć ... tak naprawdę zamierzam usunąć swój komentarz, twierdząc, że opuszczenie -r .jest takie samo
Thymine

Proste i bardzo pomocne.
Naveen Kumar V

35

Aby cofnąć niezatwierdzone scalanie, użyj

hg update --clean

który wypisze czystą kopię oryginalnego elementu macierzystego scalania, tracąc wszystkie zmiany.


2

Najwyraźniej po prostu musiałem to zrobić hg update -C -r 3, co nadpisuje moje lokalne pliki z myślą o rev (i myślałem, hg updateże tak się stanie; ale się myliłem). Dziękuję za pomoc!


2
Dodanie -Club --cleanjest sposobem, w jaki mówisz Mercurialowi, aby kontynuował, nawet jeśli wyrzuci niektóre zmodyfikowane pliki. Masz rację, hg update -r Xco zwykle prowadzi do wersji X, ale kiedy jesteś w scalaniu, musisz nalegać trochę więcej :-)
Martin Geisler

7
Myślę, że "hg revert --all --cancelmerge" byłoby dużo bardziej intuicyjne.
Warren P
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.