Как настроить kdiff3 вместо emerge как git mergetool?
У меня есть Git на Mac OSX Snow Leopard, и я попытался отредактировать инструмент слияния и сравнения, чтобы использовать kdiff3 вместо emerge.
Но когда я пытаюсь использовать его, он не запускает графический интерфейс kdiff и поддерживает меня интерфейсом на основе cmd.
Мои настройки в gitconfig:
[merge]
tool = kdiff3
[mergetool "kdiff3"]
cmd = /Applications/kdiff3.app/Contents/MacOS/kdiff3
args = $base $local $other -o $output
trustExitCode = false
[diff]
tool = kdiff3
[difftool "kdiff3"]
cmd = /Applications/kdiff3.app/Contents/MacOS/kdiff3
args = $base $local $other -o $output
trustExitCode = false
Очевидно, чего-то не хватает, но что я сделал не так?
2 ответа
Последние версии Git имеют встроенную поддержку kdiff3
, поэтому нет необходимости настраивать его вручную, используя общие параметры cmd и args. Вместо этого сделайте:
$ git config --global merge.tool kdiff3
И если kdiff3
не в вашей среде PATH также выполните:
$ git config --global mergetool.kdiff3.path /Applications/kdiff3.app/Contents/MacOS/kdiff3
Это делает git mergetool
запуск kdiff3
, Обратите внимание, что нет способа настроить Git для автоматического запуска инструмента слияния после слияния вручную, которое имеет конфликты.
Если вы действительно хотите увидеть, как Git звонит kdiff3
внутренне взгляните на встроенную конфигурацию mergetool для kdiff3.
Изменить: Для Beyond Compare 4, который теперь также поддерживает Mac OS X, просто поменяйте kdiff3
с bc3
(да, "3") и отрегулируйте путь в вышеуказанных строках. Начиная с Git 2.2.0 вы сможете использовать bc
как псевдоним для bc3
так что вам не нужно заботиться о номере версии.
Последние версии Git имеют встроенную поддержку kdiff3
Да, но только Git 2.12 (Q1 2017) позволит этим встроенным инструментам доверять своему коду выхода.
Смотрите коммит 2967284, коммит 7c10605 (29 ноября 2016 г.) Дэвида Агилара ( davvid
)
(Объединено Юнио С Хамано - gitster
- в коммите c4a44e2, 16 декабря 2016 г.)
mergetool
: честьmergetool.$tool.trustExitCode
для встроенных инструментовВстроенные инструменты слияния содержат жестко заданное предположение о том, можно ли доверять коду выхода инструмента, чтобы определить успех или неудачу слияния.
Инструменты, коды выхода которых не являются доверенными, содержат вызовыcheck_unchanged()
в ихmerge_cmd()
функции.Проблема в том, что конфигурация trustExitCode не учитывается для встроенных инструментов.
Научите встроенные инструменты, чтобы почтить
trustExitCode
конфигурации.
(Увидеть kdiff3
)
простираться
run_merge_cmd()
так что он отвечает за вызовcheck_unchanged()
когда код выхода инструмента нельзя доверять.
Удалитьcheck_unchanged()
звонки из скриптлетов, так как они больше не несут ответственности за его вызовы.