如何将Beyond Compare用作外部SVN差异工具

3

我希望配置SVN,使得svn diff filename命令可以在Beyond Compare中显示差异。

我使用的是Ubuntu系统。另外,请问大家都用什么工具进行差异比较和合并呢?在Windows上,Beyond Compare很好用,但在Linux上看起来很丑陋。


1
请每个帖子只提一个问题。 - GreenGiant
4个回答

5

就像其他答案所说的那样--您必须从脚本中调用Beyond Compare并将其传递给Subversion的--diff-cmd选项。我在Linux上使用以下脚本:

#!/bin/bash
test `/usr/bin/bcompare "$6" "$7" -title="$3" -title2="$5" -readonly` > 2 && exit 1; exit 0

这与CooCooC的帖子中提到的链接类似,不同之处在于它将Beyond Compare的返回值转换为Subversion所期望的值:0表示没有差异,1表示有差异。这可以消除错误消息和阻碍你的问题...

编辑:请参见colgur下面的评论,更好的方法是:

/usr/bin/bcompare "$7" "$6" -title1="$5" -title2="$3" -readonly & wait $! 
[ $? -gt 2 ] && exit 1; exit 0

谢谢你的回复,Nathan。它确实在我的系统(Ubuntu 12.04)中写了一个名为“2”的文件。我做了一些更改,这可能代表了您的意图:/usr/bin/bcompare "$7" "$6" -title1="$5" -title2="$3" -readonly & wait $! [ $? -gt 2 ] && exit 1; exit 0 - colgur
@colgur 很好,看起来更好了。我从来没有注意到额外的文件被写出,现在已经过了这么长时间,我也不确定为什么要那样做 :( - Nathan Monteleone
比被接受的答案更有帮助 :) 感谢提供脚本。 - David Sauter

4
请参阅SVN中的外部差异工具:
坑定位于--diff-cmd--diff3-cmd选项及同名运行时配置参数(请参见“Config”一节),这可能会使人误解使用外部差异(或“差异”)和合并工具与Subversion的简单程度。尽管Subversion可以使用大多数流行的此类工具,但设置它们的努力通常被发现是非微不足道的。
使用外部差异和合并工具(除了GNU diff和diff3之外)的关键是使用包装脚本,将Subversion输入转换为您的差异工具可理解的内容,然后将您的工具输出转换回Subversion期望的格式 - GNU工具将使用该格式。以下部分涵盖了这些期望的具体内容。


0

我绝对是Beyond Compare的粉丝,因为它不仅是一个非常好的用于源代码控制的差异/合并工具,而且在帮助同步目录/文件方面也做得非常出色。 购买一份副本绝对是毫无疑问的选择 - 不过我从未使用过Linux版本,无法担保其表现。


如何将Beyond Compare用作外部SVN差异工具? - sbi
我认为它指的是“另外一个相关的问题是大家都在使用什么工具进行差异比较和合并”,如果你插入适当的标点符号,就会变成另一个问题。 - Joey
在Windows世界中,Araxis Merge是我首选的可视化差异应用程序(在我看来比Beyond Compare好得多)。但在GNU / Linux下,为什么我要使用除Meld之外的其他东西呢? - Pascal Thivent
顺便问一下,大家都在用什么工具来进行代码的比较和合并? - belugabob
没问题,我们都曾经读得太快 - 这一定是想要第一个回答/评论的欲望导致的;-) - belugabob
@belugabob:请阅读我在http://stackoverflow.com/questions/1601457/1601490#1601490中的倒数第二条评论。 - sbi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接