Я пытаюсь привыкнуть к просмотру кода, но слияния затрудняют процесс, потому что я не знаю, как попросить Mercurial "показать только изменения, внесенные слиянием, которые не присутствовали ни в одном из его родителей".
Или, немного более формально (спасибо Стив Лош):
Покажите мне каждый кусок в слиянии, который не присутствовал ни в одном из его родителей, и покажите мне каждый кусок в любом из его родителей, который также не присутствует в 3.
Например, предположим, что у меня есть репозиторий с двумя файлами: a и b. Если "a" изменено в редакции 1, "b" изменяется в редакции 2 (которая находится на отдельной ветке), и эти два изменения объединены в редакции 3, я получу историю, которая выглядит так:
@ changeset: 3 |\ summary: Merged. | | | o changeset: 2 | | summary: Changing b | | o | changeset: 1 |/ summary: Changing a | o changeset: 0 summary: Adding a and b
Но если я попрошу посмотреть изменения, внесенные в редакцию 3, hg di -c 3
, Mercurial покажет мне то же самое, что если бы я попросил увидеть изменения, внесенные в ревизию 1, hg di -c 1
:
$ hg di -c 3 --- a/a +++ b/a @@ -1,1 +1,1 @@ -a +Change to a $ hg di -c 1 --- a/a +++ b/a @@ -1,1 +1,1 @@ -a +Change to a
Но, очевидно, это не очень полезно - вместо этого мне хотелось бы сказать, что никаких изменений не было внесено в редакцию 3 (или, если в процессе слияния возник конфликт, я хотел бы видеть только разрешение этого конфликта). Что-то вроде:
$ hg di -c 3 $
Итак, как я могу это сделать?
ps: я знаю, что я могу уменьшить количество слияний в моем репозитории с помощью rebase
... Но это не моя проблема - моя проблема заключается в том, что было изменено с помощью слияния.