Невозможно заставить git diff использовать diff.external для внешнего инструмента сравнения

Я использую git с пакетами Ubuntu 12.04 по умолчанию:

git – версия git версии 1.7.9.5

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

git -c diff.external = / home / john / bin / git-meld diff -ext-diff

но это тоже не сработало (по-прежнему вызывает diff –cc)

Я также попытался установить GIT_EXTERNAL_DIFF, а также попробовать git diftool –tool = meld (что также странно вызывает diff -cc). Я полностью зациклен на том, почему мои настройки инструмента diff игнорируются git. Я нахожу вывод diff -cc непостижимым, потому что я долгое время использовал инструменты разметки GUI.

Должен ли я попробовать обновить новую версию git?

Спасибо за любую помощь! Джон

Мои настройки конфигурации git:

git config -l

user.name = jmicco user.email=parent.bank.app@gmail.com diff.external = / home / john / bin / git-meld diff.tool.external = / home / john / bin / git-meld core. editor = emacs core.repositoryformatversion = 0 core.filemode = true core.bare = false core.logallrefupdates = true remote.origin.fetch = + refs / heads / : refs / remotes / origin / remote.origin.fetch = refs / notes / : refs / notes / remote.origin.url = ssh: //jmicco@review.gerrithub.io: 29418 / jmicco / allowance-app remote.origin.pushurl = ssh: //jmicco@review.gerrithub.io: 29418 / jmicco / allowance-app remote.origin.push = HEAD: refs / for / master branch.master.remote = origin branch.master.merge = master remote.gerrit.url = ssh: //jmicco@review.gerrithub.io : 29418 / jmicco / allowance-app remote.gerrit.fetch = + refs / heads / : refs / remotes / gerrit / remote.gerrit.fetch = refs / notes / : refs / notes / remote.gerrit.pushurl = ssh: / /jmicco@review.gerrithub.io:29418/jmicco/allowance-app remote.gerrit.push = HEAD: refs / for / master gerrit.createchangeid = true

Пытаться:

GIT_EXTERNAL_DIFF="/bin/echo" git diff 

Он должен печатать что-то вроде:

 foo.c /tmp/T1NuN5_foo.c 240b63429c3267f8141ee0f33be9d12fc46216d3 100755 foo.c 0000000000000000000000000000000000000000 100755 

Тогда все в порядке с вашей версией git.

diff.external=/home/john/bin/git-meld является недопустимой настройкой. Git ожидает, что внешняя программа diff распознает git-специфические аргументы и выдаст стандартный вывод diff. Мелд этого не сделает.

Я думаю, вам нужно git difftool -t meld