无法使用meld进行svn diff

时间:2012-06-20 07:15:20

标签: linux svn meld

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

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

但它引发了以下错误:

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

有人可以告诉我这里出了什么问题吗?

2 个答案:

答案 0 :(得分:5)

我相信E200012意味着底层进程(meld)以非零退出代码退出。大量的diff工具用来指示diff操作的结果(0 =没有差异1 =差异等)。

虽然我的meld版本似乎没有使用非零退出代码,但我知道colordiff会这样做,它会在目录爬行期间停止SVN" svn diff",就像上面的例子一样。在没有任何测试更改的文件上尝试。

一个很好的解决方法是制作你自己的diff命令,让我们称之为meld_svn:

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

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

使其可执行,然后编辑〜/ .subversion / config并将diff-cmd设置为" meld_svn"。这对于colordiff非常有用,如果meld确实退出非零退出代码,那么应该解决你的问题。

我希望有所帮助。

答案 1 :(得分:4)

对我来说问题是默认情况下svn将-u作为外部diff命令的选项传递,并且meld不会期望或那个标志。

-x的{​​{1}}标志允许您覆盖此默认标记:

svn-diff

这会在melds命令行上用 svn diff -x \"\" --diff-cmd meld 替换-u,需要转义,这样shell就不会在第一次解析引号时将其传递给SVN,后者通过它进入了meld命令行。

(顺便说一句,使用""作为diff-cmd可以让您轻松检查SVN将发送给哪些网站。

相关问题