【问题标题】:How do I make Subversion use a third-party diff tool?如何让 Subversion 使用第三方差异工具?
【发布时间】:2008-11-12 16:57:46
【问题描述】:

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

svn diff foo.c

我该怎么做?

【问题讨论】:

  • 原来的问题提到了Linux。这可能应该留在问题的标题中。

标签: linux svn diff beyondcompare


【解决方案1】:

来自Beyond Compare forum post

/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

【讨论】:

    【解决方案2】:

    看 svn --diff-cmd。

    【讨论】:

    • 带有--diff-cmd svn客户端(我的是1.6.6)仍然为指定的命令生成-L选项,如-L "file1 (rev xyz)" -L "file2 (rev abc)" 所以,除非你的 diff cmd 对这些没问题,否则它就坏了。 Chris 在他的 Beyond Compare 页面中有一个很好的解决方法,其中涉及创建启动器脚本。
    【解决方案3】:

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

    无论如何...正如安迪已经指出的那样运行“svn help diff”,但只是给您答案...

    svn diff --diff-cmd --extensions

    svn diff --diff-cmd /usr/bin/diff --extensions "-bca"

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 为什么要那样做?请解释一下为什么您将这个不同的脚本推荐给已接受的答案?
        猜你喜欢
        • 1970-01-01
        • 2015-08-02
        • 2011-07-25
        • 1970-01-01
        • 1970-01-01
        • 2021-04-03
        • 1970-01-01
        • 1970-01-01
        • 2013-11-27
        相关资源
        最近更新 更多