无法使用meld进行svn diff

aas*_*ash 6 linux svn meld

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

svn diff -r 2165:2182 --diff-cmd meld
Run Code Online (Sandbox Code Playgroud)

但它引发了以下错误:

Index: app/models/college_friends_count.rb
===================================================================
svn: E200012: Process 'meld' failed (exitwhy 2)
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这里出了什么问题?

Gre*_*reg 6

我相信E200012意味着底层进程(meld)以非零退出代码退出.很多diff工具都是为了表示diff操作的结果(0 =没有差异1 =差异等).

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

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

#!/bin/bash
meld "$6" "$7" 
exit 0
Run Code Online (Sandbox Code Playgroud)

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

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

我希望有所帮助.