Благодаря бесконечным усилиям одного из самых вежливых пользователей по обмену стеками, я наконец-то понял, что Mercurial Wiki, похоже, устарела. Там это говорит:
Добавить в ~/.hgrc:
[extensions]
hgext.extdiff =
[extdiff]
cmd.kdiff3 =
[merge-tools]
kdiff3.args = $base $local $other -o $output
Расширение extdiff не требуется, так как я не хочу определять здесь новую команду hg kdiff3
.
Но у Mercurial есть еще несколько настроек для инструмента слияния:
[ui]
merge = kdiff3
Что касается справки Mercurial по инструментам слияния, настройка ui.merge
не обязательна, поскольку я специально установил конфигурацию инструментов слияния:
Mercurial использует эти правила при решении, какой инструмент слияния использовать:
- Если инструмент был указан с параметром --tool для слияния или разрешения, он используется. Если это имя инструмента в конфигурации инструментов слияния, используется его конфигурация. В противном случае указанный инструмент должен быть исполняемым оболочкой.
- Если переменная окружения "HGMERGE" присутствует, ее значение используется и должно выполняться исполняемой оболочкой.
- Если имя файла файла для слияния совпадает с любым из шаблонов в разделе конфигурации шаблонов слияния, используется первый пригодный для использования инструмент слияния, соответствующий соответствующему шаблону. Здесь двоичные возможности инструмента слияния не рассматриваются.
- Если ui.merge установлен, он будет считаться следующим. Если значение не является именем настроенного инструмента, указанное значение используется и должно быть выполнимо оболочкой. В противном случае указанный инструмент используется, если он пригоден для использования.
- Если какие-либо используемые инструменты слияния присутствуют в разделе конфигурации инструментов слияния, используется тот, который имеет наивысший приоритет.
- Если в системе можно найти программу с именем "hgmerge", она используется, но по умолчанию она не будет использоваться для символических ссылок и двоичных файлов.
- Если файл, который должен быть объединен, не является двоичным и не является символической ссылкой, то используется внутренний «:merge».
- Слияние файла не удается и должно быть решено до принятия.
У меня почему-то возникает ощущение, что Mercurial изменил свое поведение здесь (или какой-то другой части моей системы), потому что на всех машинах, где я использовал kdiff3, у меня нет последней настройки в моем .hgrc. Тем не менее, добавление ui.merge
делает свое дело.