Нет технической причины, по которой вы не можете слиться с предком: как вы узнали, Mercurial поддерживает это в некоторых обстоятельствах.Так что это чисто ограничение GUI.Причиной этого является то, что когда hg update
даст вам тот же результат, что и hg merge
, тогда вы должны использовать его вместо этого для простоты.
A слияние - это просто смесь трехсостояние хранилища: общий предок и две ревизии, которые вы объединяете.Трехстороннее слияние выполняется по принципу «кусок-за-лом».Таблица для слияния local с remote выглядит следующим образом:
ancestor local remote -> merge
old old old old (nobody changed the hunk)
old new old new (I changed the hunk)
old old new new (you changed the hunk)
old new new new (hunk was cherry picked onto both branches)
old foo bar <!> (conflict, both changed hunk but differently)
Если local
является предком remote
, то ancestor == local
.Таким образом, таблица становится такой:
ancestor local remote -> merge
old old old old (nobody changed the hunk)
old old new new (you changed the hunk)
В обоих случаях столбец merge
содержит то, что было в столбце remote
.В вашем примере local
- это default
, а remote
- file-content
:
$ hg update default
$ hg merge file-content
Результатом является набор изменений слиянием, который выглядит так же, как file-content
.