我想使用meld来查看修订版本之间的区别。我安装了meld,然后在项目目录中执行:
svn diff -r 2165:2182 --diff-cmd meld
但它引发了以下错误:
Index: app/models/college_friends_count.rb
===================================================================
svn: E200012: Process 'meld' failed (exitwhy 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将发送给哪些网站。