Подтвердить что ты не робот

Как настроить kdiff3 вместо emerge как git mergetool?

У меня есть Git на Mac OSX Snow Leopard, и я попытался изменить свой инструмент merge и diff, чтобы использовать 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

Очевидно, что-то не хватает, но что я сделал неправильно?

4b9b3361

Ответ 1

В последних версиях 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, чтобы вам не пришлось заботиться о номере версии.

Ответ 2

В последних версиях Git есть встроенная поддержка kdiff3

Да, но только Git 2.12 (Q1 2017) позволит тем встроенным инструментам доверять их код выхода.

См. commit 2967284, совершить 7c10605 ( 29 ноября 2016 г.) Дэвид Агилар (davvid).
(объединено Junio ​​C Hamano - gitster - в совершить c4a44e2, 16 декабря 2016 г.

mergetool: честь mergetool.$tool.trustExitCode для встроенных инструментов

Встроенные инструменты слияния содержат жестко закодированное предположение о том, можно ли доверять код выхода инструмента, чтобы определить успех или сбой слияния.
Инструменты, чьи коды выхода не доверяются, содержат вызовы check_unchanged() в своих функциях merge_cmd().

Проблема заключается в том, что конфигурация trustExitCode не выполняется для встроенных инструментов.

Научитесь встроенным инструментам в честь конфигурации trustExitCode.

(см. kdiff3)

Расширьте run_merge_cmd(), чтобы он отвечал за вызов check_unchanged(), когда невозможно вернуть код выхода инструмента.
Удалите вызовы check_unchanged() из сценариев, поскольку они больше не отвечают за его вызов.