我想使用meld来查看不同版本之间的差异。我安装了meld,然后在项目目录中执行:
svn diff -r 2165:2182 --diff-cmd meld但它会解冻以下错误:
Index: app/models/college_friends_count.rb
===================================================================
svn: E200012: Process 'meld' failed (exitwhy 2)有人能告诉我这里出了什么问题吗?
发布于 2012-12-26 15:57:04
我认为E200012意味着底层进程(meld)以非零退出代码退出。许多diff工具都这样做,以指示diff操作的结果(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很有效,如果meld确实退出了非零退出代码,那么应该可以解决meld的问题。
我希望这能有所帮助。
发布于 2013-12-03 23:38:10
对我来说,问题是在默认情况下,svn将-u作为一个选项传递给外部的diff命令,而meld并不期望或该标志。
svn-diff的-x标志允许您覆盖此默认标志:
svn diff -x \"\" --diff-cmd meld这在meld命令行中用""替换了-u,转义是必需的,这样您的shell就不会在第一次使用时解析引号,而是将它们传递给SVN,由SVN将其传递到meld命令行。
(顺便说一句,使用echo作为diff-cmd允许您轻松地检查SVN将发送到meld的内容)
https://stackoverflow.com/questions/11114586
复制相似问题