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

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

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

Я не могу найти никакого механизма, который работает, чтобы заставить git 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 config ниже:

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 /глав / : 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

1 ответ

Пытаться:

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

Другие вопросы по тегам