Полностью ручное Mercurial слияние - PullRequest
18 голосов
/ 26 марта 2009

Есть ли какой-либо способ полностью контролировать процесс слияния в Mercurial вручную?

Я хочу иметь возможность выбирать направление слияния, даже для файлов без конфликтов. Это возможно?

Ответы [ 4 ]

20 голосов
/ 02 апреля 2009

Выключите «pre-merge» в вашей конфигурации слияния. Тогда все считается конфликтом, и вы можете выбрать «влево» или «вправо» для каждого изменения файла.

[merge-tools]
mymergetool.premerge = False

из Конфигурация MergeTool в Mercurial wiki .

12 голосов
/ 26 июня 2010

Отредактируйте файл конфигурации следующим образом:

[ui]
merge = kdiff3

[merge-tools]
kdiff3.premerge = false
kdiff3.args=--L1 base --L2 local --L3 other $base $local $other -o $output

По умолчанию он помещает аргумент --auto в kdiff3, поэтому kdiff3 автоматически объединяется.

2 голосов
/ 26 марта 2009

Слияние всегда выполняется между родительской ревизией рабочего каталога и другой ревизией, по умолчанию другой заголовок в вашем хранилище.

Если вы хотите объединить в другом «направлении», вы можете изменить, какая ветвь находится в вашем рабочем каталоге, проверив определенную ревизию:

hg update -r [rev]

Чтобы увидеть, какие у вас головы в вашем хранилище, введите следующую команду:

hg heads

В качестве альтернативы, если вы используете fetch, вы можете использовать опцию --switch-parent для объединения в другом направлении:

hg fetch --switch-parent

Вы не можете изменять направление слияния для каждого файла отдельно, поскольку Mercurial работает с наборами изменений, которые влияют на весь репозиторий, а не отслеживая изменения отдельных файлов, таких как CVS.

1 голос
/ 05 февраля 2018

В случае KDiff3 жизненно важно добавить опцию --qall (см. http://kdiff3.sourceforge.net/doc/documentation.html).. Произойдет автоматическое объединение некоторых конфликтов без этого ключа (например, " Автоматическое решение простых конфликтов " из меню " Слияние "). Таким образом, более подходящая командная строка:

[ui]
merge = kdiff3

[merge-tools]
kdiff3.premerge = False
kdiff3.args=$base $local $other -o $output --L1 base --L2 local --L3 other --qall
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...