无法使用svn的MELD差异(Unable to svn diff using meld)

2019-09-18 07:06发布

我想用MELD来查看版本之间的差异。 我安装合并,然后在项目目录执行:

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

但thows了以下错误:

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

谁能告诉我是怎么回事错在这里?

Answer 1:

相信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的确实非零退出代码退出。

我希望帮助。



Answer 2:

对我来说,问题是,在默认情况下SVN通过-u作为一个选项,把外部diff命令,合并并不指望或标志。

-x为标志svn-diff允许您覆盖此默认标志:

 svn diff -x \"\" --diff-cmd meld

这将替换-u""上融合了命令行中,逃逸是必需的,这样你的shell不解析报价,标志着第一次全面,而不是将它们传递给SVN,谁其传递到MELD命令行。

(顺便说一句,利用echo作为DIFF-CMD可以让你轻松检查什么SVN会发送到MELD)



文章来源: Unable to svn diff using meld
标签: linux svn meld