Я пытаюсь привыкнуть к просмотру кода, но слияния усложняют процесс, потому что я не знаю, как попросить 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… Но это не моя проблема — моя проблема заключается в том, чтобы выяснить, что было изменено при слиянии.