无法svn使用融合

我想用meld来查看修订之间的区别。 我安装了meld,然后在项目目录中执行:

svn diff -r 2165:2182 --diff-cmd meld 

但它会抛出以下错误:

 Index: app/models/college_friends_count.rb =================================================================== svn: E200012: Process 'meld' failed (exitwhy 2) 

有谁可以告诉我这里有什么问题吗?

Solutions Collecting From Web of "无法svn使用融合"

我相信E200012意味着底层进程(meld)退出非零退出代码。 很多差异工具可以用来指示差异运算的结果(0 =没有差异1 =差异等)。

虽然我的meld版本似乎不使用非零的退出代码,但我知道colordiff会在目录爬行“svn diff”期间暂停SVN,就像上面的例子。 在没有任何更改的文件上进行测试。

一个很好的解决办法是制作自己的diff命令,比方说你把它叫做meld_svn:

 #!/bin/bash meld "$6" "$7" exit 0 

所以我们正在做的是忽略meld的退出代码,并退出与我们自己的(这不会停止SVN)。 参数周围的引号意味着文件名中包含空格不会破坏脚本。

让它可执行,然后编辑你的〜/ .subversion / config并将diff-cmd设置为“meld_svn”。 这对colordiff非常有用,如果融合确实以非零退出代码退出,应该用融合来解决你的问题。

我希望有帮助。

对我来说,问题在于,默认情况下,svn将-u作为外部diff命令的选项传递,而meld不指望或标记。

svn-diff-x标志允许你重载这个默认标志:

  svn diff -x \"\" --diff-cmd meld 

在melds命令行中用""替换-u ,转义符是必需的,这样shell就不会在第一次分析引号,而是将它们传递给SVN,SVN将它传递给meld命令行。

(顺便说一句,使用echo作为diff-cmd可以让你很容易地检查什么SVN将发送到meld)