我需要的不仅仅是默认差异!我最近购买了“Beyond Compare”,我想将它与 svn 集成,所以它在我输入时启动:
svn diff foo.c
我该怎么做呢?
我需要的不仅仅是默认差异!我最近购买了“Beyond Compare”,我想将它与 svn 集成,所以它在我输入时启动:
svn diff foo.c
我该怎么做呢?
/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。
我想对安迪·莱斯特的回答添加评论,但我没有足够大的声誉。不过,我想我可以回答这个问题。
无论如何......正如安迪已经指出的那样运行“svn help diff”,但只是给你答案......
svn diff --diff-cmd <diff-cmd> --extensions <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