Ответ 1
Да. Встроенный инструмент слияния internal:local
.
$ hg merge 4 --tool internal:local
Аналогично там internal:other
, который выбирает другую версию файлов как объединенную версию.
В этом примере, чтобы выяснить, что происходит, начните с репо с одним файлом:
$ echo a >> a
$ hg ci -Am.
adding a
$ echo a >> a
$ hg ci -Am.
Разделите его и поместите конфликт в a
:
$ hg up 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo b >> a
Также добавьте еще один файл только в объединенной ветке:
$ echo b >> b
$ hg ci -Am.
adding b
created new head
Вернитесь назад и объедините анонимную голову:
$ hg up 1
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 2 --tool internal:local
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Естественно, что в этот момент без инструмента слияния мы получим конфликт на a
. Но используя инструмент слияния, мы говорим Mercurial, чтобы взять версию первого родителя в каждом файле, который также затронул слияние с cset.
$ hg st
M a
M b
$ cat a
a
a
$ cat b
b