2016-08-23 3 views
3

Я пытаюсь использовать emacs ediff как git difftool.Ediff as git difftool

Я следовал некоторым из конфигураций, предложенных здесь: Using ediff as git mergetool

Когда дело доходит до сравнения между различной GIT версиями определенного файла, у меня есть не проблема вообще: Ediff работает хорошо, и различие между двумя версиями изображены должным образом.

Однако у меня возникают проблемы при попытке запустить git difftool для сравнения текущей версии каталога файла с определенной версией git. Для некоторых файлов, я получаю следующее сообщение об ошибке:

apply: Wrong type argument: arrayp, nil

Это странно, потому что эта ошибка возникает только для определенных файлов, не все из них.

Я экспериментировал с несколькими файлами, и я думаю, что эмпирическое правило выглядит следующим образом: - Если файл, который нужно сравнить, не помещается в корневой каталог git, то он терпит неудачу. - В противном случае, ediff показывает различия между текущей версией файла и указанной версией без каких-либо проблем.

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

Любая идея, как это можно исправить?

Большое спасибо. -Bob

+0

вы можете использовать 'meld', который также является Awesome! – VKatz

+0

Ну, да, я знаю meld, но я предпочитаю ediff, так как это часть моего рабочего процесса. Я также использую magit внутри emacs, и он отлично работает. Но иногда, когда я хочу запустить diff сразу, не попадая в magit, и поэтому мне нужен ediff. –

ответ

1

Git знает о стандартном инструменте разворота/слияния, включая ediff/emerge. Попробуйте

git config --global diff.tool ediff 

и вызывать его с

git difftool --tool=ediffclient master -- <file> 

или аналогичный. ediffclient будет использовать emacsclient и не запускать новые emacs, которые я предпочитаю, но YMMV.

+0

Спасибо. Я пробовал то, что вы сказали, и все работает отлично. С уважением –

+0

Тогда почему вы не приняли ответ? – Nick

+0

Извините. Я полностью забыл об этом ... Спасибо –