首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用meld进行svn比较

无法使用meld进行svn比较
EN

Stack Overflow用户
提问于 2012-06-20 15:15:20
回答 2查看 11.1K关注 0票数 8

我想使用meld来查看不同版本之间的差异。我安装了meld,然后在项目目录中执行:

代码语言:javascript
复制
svn diff -r 2165:2182 --diff-cmd meld

但它会解冻以下错误:

代码语言:javascript
复制
Index: app/models/college_friends_count.rb
===================================================================
svn: E200012: Process 'meld' failed (exitwhy 2)

有人能告诉我这里出了什么问题吗?

EN

回答 2

Stack Overflow用户

发布于 2012-12-26 15:57:04

我认为E200012意味着底层进程(meld)以非零退出代码退出。许多diff工具都这样做,以指示diff操作的结果(0 =无差异,1=差异,依此类推)。

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

一个很好的解决方法是创建自己的diff命令,假设您将其称为meld_svn:

代码语言:javascript
复制
#!/bin/bash
meld "$6" "$7" 
exit 0

因此,我们正在做的是忽略meld的退出代码,并使用我们自己的退出代码(这不会阻止SVN)。参数两边的引号表示文件名中包含空格不会破坏您的脚本。

将其设置为可执行文件,然后编辑~/.subversion/config并将diff-cmd设置为"meld_svn“。这对于colordiff很有效,如果meld确实退出了非零退出代码,那么应该可以解决meld的问题。

我希望这能有所帮助。

票数 7
EN

Stack Overflow用户

发布于 2013-12-03 23:38:10

对我来说,问题是在默认情况下,svn将-u作为一个选项传递给外部的diff命令,而meld并不期望或该标志。

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

代码语言:javascript
复制
 svn diff -x \"\" --diff-cmd meld

这在meld命令行中用""替换了-u,转义是必需的,这样您的shell就不会在第一次使用时解析引号,而是将它们传递给SVN,由SVN将其传递到meld命令行。

(顺便说一句,使用echo作为diff-cmd允许您轻松地检查SVN将发送到meld的内容)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11114586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档