如何让Subversion使用第三方差异工具?

时间:2008-11-12 16:57:46

标签: linux svn diff beyondcompare

我需要的不仅仅是默认差异!我最近购买了“Beyond Compare”,我想将它与svn集成,所以当我输入时它会启动:

svn diff foo.c

我该怎么做?

5 个答案:

答案 0 :(得分:24)

来自Beyond Compare forum post

的/ usr /斌/ bcompare_svn:

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

bcompare的调用很明显,但我必须添加“exit 0”,这样svn一次可以打开多个文件。

为了让svn调用我的脚本,我在〜/ .subversion / config

的[helpers]部分添加了以下行。
diff-cmd=/usr/bin/bcompare_svn

答案 1 :(得分:11)

看看svn --diff-cmd。

答案 2 :(得分:8)

我想对Andy Lester的答案添加评论,但我没有足够的声誉。但是,我想我可以回答这个问题。

无论如何......正如Andy已经注意到的那样,运行“svn help diff”,但只是给你答案......

svn diff --diff-cmd< diff-cmd> --extensions< diff-cmd选项>

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

答案 3 :(得分:4)

我最近在我们的Using Beyond Compare With Version Control Systems网页上添加了Linux上的Subversion说明。按照上述链接中的步骤操作后,当您运行“svn diff”时,它应启动Beyond Compare 3 for Linux。

答案 4 :(得分:4)

在最新的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