我如何让Subversion使用第三方的diff工具?

我需要超过默认的差异! 我最近买了“Beyond Compare”,我想把它和svn整合,所以当我input:

svn diff foo.c

我该怎么做呢?

从一个超越比较论坛帖子 :

在/ usr / bin中/ bcompare_svn:

#!/bin/bash /usr/bin/bcompare $6 $7 & exit 0 

调用bcompare是显而易见的,但我不得不添加“退出0”,这样svn会同时打开多个文件。

为了让svn调用我的脚本,我在〜/ .subversion / config的[helpers]部分添加了下面一行

 diff-cmd=/usr/bin/bcompare_svn 

看看svn –diff-cmd。

我想给安迪·莱斯特的回答添加一个评论,但是我没有足够的声望。 不过,我想可以回答这个问题。

无论如何…正如安迪已经注意到运行“svn帮助差异”,但只是给你答案…

svn diff –diff-cmd <diff-cmd> –extensions <diff-cmd options>

svn diff –diff-cmd / usr / bin / diff –extensions“-bca”<filename(s)>

我最近在Linux上添加了Subversion的说明,以便我们使用Beyond Compare与版本控制系统的网页。 一旦你按照上述链接的步骤,当你运行“svn diff”时,它应该启动Beyond Compare 3 for Linux。

在最新的Subversion中,脚本/ usr / bin / bcompare_svn应该是这样的:

 #!/bin/bash cp $6 $6.save cp $7 $7.save { /usr/bin/bcompare $6.save $7.save rm $6.save $7.save } & exit 0 

或(未经测试的代码)

 #!/bin/bash base=`echo $3 | sed -r "s/^([^\(]+)[ \t]+\((.+)\)$/\1.\2/g" | xargs -i% basename "%"` current=`echo $5 | sed -r "s/^([^\(]+)[ \t]\((.+)\)$/\1.\2/g" | xargs -i% basename "%"` mv "$6" "/tmp/$base" mv "$7" "/tmp/$current" { /usr/local/bcompare/bin/bcompare "/tmp/$base" "/tmp/$current" rm "/tmp/$base" "/tmp/$current" } & exit 0