git-diffall和git difftool --dir-diff无法与Araxis Merge一起使用

时间:2014-01-21 02:43:24

标签: git powershell merge github-for-windows araxis-merge

当我运行git-diffallhttps://github.com/thenigan/git-diffall)或git difftool --dir-diff(均来自@Tim Henigan's SO post)时,我收到以下错误:

Not enough arguments for a three-way comparison.

我的配置是:

  • GitHub for Windows 1.2.6.4 f054d9f(位于msysgit 1.8.4之上)
  • Araxis Merge 2013专业版2013.4296
  • 适用于Windows的GitHub附带的Posh Git PowerShell提示

非常奇怪的是,这个完全相同的设置适用于我的其他机器。

git config --global diff.toolgit config --local diff.tool都按预期返回“araxis”。

实际的本地repo配置包含以下部分:

[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' documentation

我不确定参数实际上是如何传递给Araxis的,因此不知道如何进一步解决这个问题。

我需要执行哪些步骤来更正配置,以便我可以使用Araxis Merge进行目录比较?

1 个答案:

答案 0 :(得分:1)

在放下它并在一段时间后回到它之后,我发现了我的问题的原因。虽然我上面的研究是准确的,但并没有揭示整个故事。经过一番挖掘,我发现了原因。

我在git config --global -lgit 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 -egit config --local -e进行了实际编辑,因此没有错误编辑正确的文件。