我想用MELD来查看版本之间的差异。 我安装合并,然后在项目目录执行:
svn diff -r 2165:2182 --diff-cmd meld
但thows了以下错误:
Index: app/models/college_friends_count.rb
===================================================================
svn: E200012: Process 'meld' failed (exitwhy 2)
谁能告诉我是怎么回事错在这里?
相信E200012意味着基本过程(MELD)退出,非零退出代码。 的差异工具很多这样做是为了表示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的确实非零退出代码退出。
我希望帮助。
对我来说,问题是,在默认情况下SVN通过-u作为一个选项,把外部diff命令,合并并不指望或标志。
该-x
为标志svn-diff
允许您覆盖此默认标志:
svn diff -x \"\" --diff-cmd meld
这将替换-u
用""
上融合了命令行中,逃逸是必需的,这样你的shell不解析报价,标志着第一次全面,而不是将它们传递给SVN,谁其传递到MELD命令行。
(顺便说一句,利用echo
作为DIFF-CMD可以让你轻松检查什么SVN会发送到MELD)