git-diffall и git difftool --dir-diff не работает с Araxis Merge

Когда я бегу git-diffall ( https://github.com/thenigan/git-diffall) или git difftool --dir-diff (оба ссылаются на SO пост @Tim Henigan), я получаю следующую ошибку:

Недостаточно аргументов для трехстороннего сравнения

Моя конфигурация:

  • GitHub для Windows 1.2.6.4 f054d9f (который находится поверх msysgit 1.8.4)
  • Araxis Merge 2013 Professional Edition 2013.4296
  • Шикарный Git PowerShell, который поставляется вместе с GitHub для Windows

То, что очень странно, - то, что эта точно такая же установка работает на моей другой машине.

И то и другое git config --global diff.tool а также git config --local diff.tool вернуть "араксис", как и ожидалось.

Фактическая конфигурация локального репо содержит этот раздел:

[diff]
    tool = araxis
[difftool "araxis"]
    path = C:/Program Files/Araxis/Araxis Merge/compare.exe
    prompt = false
[merge]
    tool = araxis
[mergetool "araxis"]
    path = C:/Program Files/Araxis/Araxis Merge/compare.exe

На что ссылается документация Араксиса.

Я не совсем уверен, каким образом параметры действительно передаются в Araxis, и поэтому не знаю, как решить эту проблему дальше.

Какие шаги мне нужно выполнить, чтобы исправить мою конфигурацию, чтобы я мог выполнить сравнение каталогов с помощью Araxis Merge?

1 ответ

Решение

Отложив это и вернувшись к нему через некоторое время, я обнаружил причину своей проблемы. Хотя мое исследование было точным, оно не раскрыло всей истории. После еще нескольких раскопок я обнаружил причину.

Я сделал разницу между выводом git config --global -l а также git config --local -l и понял, что у меня были некоторые противоречивые (и ошибочные) конфигурации для моих difftools. Я не уверен, как они вышли из синхронизации, но то, что они отличались вообще, была мертвой дешевой распродажей.

Моя глобальная конфигурация выглядела так:

[merge]
    tool = Araxis
[mergetool "kdiff3"]
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe
[diff]
    guitool = araxis
    tool = araxis
[difftool "kdiff3"]
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe
[difftool]
    prompt = false
[difftool "Araxis"]
    path = C:/Program Files/Araxis/Araxis Merge/Compare.exe
    cmd = \"c:/Program Files/Araxis/Araxis Merge/Compare.exe\" -wait -merge -3 -a1 \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
[mergetool "Araxis"]
    path = C:/Program Files/Araxis/Araxis Merge/Compare.exe
    cmd = \"c:/Program Files/Araxis/Araxis Merge/Compare.exe\" -wait -merge -3 -a1 \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
[difftool "araxis"]
    path = C:/Program Files/Araxis/Araxis Merge/Compare.exe
    cmd = \"c:/Program Files/Araxis/Araxis Merge/Compare.exe\" -wait -merge -3 -a1 \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"

Я заменил его содержимым локальной конфигурации (опубликованной в OP) и удалил конфигурацию инструментов из локальной конфигурации.

После этого моя проблема полностью исчезла.

Я сделал фактическое редактирование, используя git config --global -e а также git config --local -e чтобы не было ошибок при редактировании правильных файлов.

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