Jak zrezygnować z połączenia hg?

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

  • inny programista zmienił rev 1 Pliku, aby zastąpić 4-spacje wcięciami 2-spacjami. (Tzn. zmieniał każdą linię.) Call that rev 2, pushed to the remote repo.
  • wprowadziłem zmiany merytoryczne rev 1 z różnymi zmianami kodu w moim lokalnym obszarze roboczym. Nazwij to rev 3.
  • mam hg pull ed i hg merge D bez jasnego pojęcia o tym, co się dzieje.
  • konflikty są niezliczone i nie do końca merytorycznie.

Więc naprawdę żałuję, że nie zmieniłem mojego lokalnego repo na 2-space wcięcia przed scaleniem; wtedy scalenie będzie trywialne (zakładam). Ale nie mogę się wycofać. Myślę, że muszę hg update -r 3, ale jest napisane abort: outstanding uncommitted merges.

Jak mogę cofnąć scalenie, zmienić odstępy w moim lokalnym repo i remerge?

Author: Martin Geisler, 2010-04-03

4 answers

Możesz odrzucić niezatwierdzone zmiany używając flagi-C (lub --clean):

hg update -C -r 3
[3]} strzeż się: wszystko, co nie zostało popełnione, zniknie!

Następnie 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ślników) __ (2 spacje), powtórzone kilka razy (chyba że masz obłędnie zagnieżdżony kod) powinno zadziałać.

 109
Author: R. Martinho Fernandes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-03 04:23:20

BTW: jeśli tylko odwrócisz scalenie, które zrobiłeś, a 3 nie jest Twoim numerem rewizji, możesz to zrobić:

hg update -C -r .
 107
Author: math,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-01 11:23:11

Aby cofnąć niezakontraktowane połączenie, użyj

hg update --clean

Który wyświetli czystą kopię oryginalnego rodzica scalającego, tracąc wszystkie zmiany.

 25
Author: Tao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-27 06:42:48

Najwyraźniej potrzebowałem hg update -C -r 3, co nadpisuje moje lokalne pliki z myślą o rev (co myślałem hg update zrobi; ale się myliłem.) Dzięki za pomoc!

 1
Author: Grumdrig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-03 04:31:29