Ответ 1
Когда вы обновляетесь до D
и graft F::J
, Mercurial запускает несколько слияний. Он начнется с этого слияния:
M = three_way_merge(local=D, other=F, base=E)
Если мы напишем +d
для дельта между состояниями C
и D
, тогда мы начнем с:
+d +e +f
---- C ---- D ---- E ---- F ----
Поверните график на 90 градусов по часовой стрелке, и вышеупомянутое трехстороннее слияние выглядит следующим образом:
-e
.---- D
/
E
\
'---- F
+f
То есть мы делаем вид, что мы начали с E
и применили противоположное от -e
, чтобы перейти к D
. Я считаю обратным патчем +e
. Начиная с E
, мы также перешли в состояние F
с нормальной дельта +f
. Здесь нет ничего странного - у нас уже есть все состояния (D
, E
и F
) в репозитории. Таким образом, видно, что мы можем объединить D
и F
.
Слияние - это вопрос "завершения бриллианта". Итак, мы находим новое состояние M
, которое представляет собой сочетание D
и F
, а разность от D
до M
аналогична +f
, а разница от F
до M
аналогичен -e
. Это выглядит так:
-e +f'
.---- D ----.
/ \
E M
\ /
'---- F ----'
+f -e'
Дельта +f
стала +f'
, а дельта -e
стала -e'
. Это просто нормальное трехстороннее слияние, но эффект интересен: мы применили F
на D
вместо E
!
После слияния второй родительский элемент M
до F
отбрасывается:
-e +f'
.---- D ----.
/ \
E M
\
'---- F
+f
Повторим: мы скопировали "эффект" F
на D
, то есть мы обнаружили, что дельта (+f'
), примененная к D
, дает тот же эффект, что и при +f
был применен к E
. Мы можем немного выровнять график, чтобы получить:
+f'
--- D ---- M
\
'---- E ---- F
+e +f
В результате F
прививается на D
с использованием полного трехстороннего механизма.
-
Q1: Что здесь произошло? Итак... как это работает? Почему это лучше?
A1: Использование слияний лучше, чем патчи, поскольку механизм слияния принимает такие вещи, как переименование.
-
Q2: Является ли это слияние просто нормальным трехсторонним слиянием с использованием D, J 'и M1?
A2: Да, прививка не изменяет топологию графика.
-
Q3: Сохраняет/использует ртуть дополнительную информацию о операции трансплантата, чтобы помочь ей слиянием?
A3: Нет.
-
Q4: Каковы потенциальные проблемы с потоком, подобным этому?
A4: С точки зрения слияния он должен работать нормально. Он продублирует некоторую историю, которая может сбить с толку людей.