【发布时间】:2008-11-12 16:57:46
【问题描述】:
我需要的不仅仅是默认差异!我最近购买了“Beyond Compare”,我想将它与 svn 集成,所以当我输入时它就会启动:
svn diff foo.c
我该怎么做?
【问题讨论】:
-
原来的问题提到了Linux。这可能应该留在问题的标题中。
标签: linux svn diff beyondcompare
我需要的不仅仅是默认差异!我最近购买了“Beyond Compare”,我想将它与 svn 集成,所以当我输入时它就会启动:
svn diff foo.c
我该怎么做?
【问题讨论】:
标签: linux svn diff beyondcompare
/usr/bin/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
【讨论】:
看 svn --diff-cmd。
【讨论】:
我想对 Andy Lester 的回答添加评论,但我没有足够大的声誉。不过,我想我可以回答这个问题。
无论如何...正如安迪已经指出的那样运行“svn help diff”,但只是给您答案...
svn diff --diff-cmd
svn diff --diff-cmd /usr/bin/diff --extensions "-bca"
【讨论】:
我最近在我们的Using Beyond Compare With Version Control Systems 网页上添加了 Linux 上的 Subversion 说明。一旦您按照上述链接中的步骤操作,它应该会在您运行“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
【讨论】: