【问题标题】:Set up TortoiseMerge as external merge tool for SVN?将 TortoiseMerge 设置为 SVN 的外部合并工具?
【发布时间】:2010-02-27 19:44:59
【问题描述】:

是否可以将 TortoiseMerge(TortoiseSVN 附带)设置为使用“svn merge”命令行遇到合并冲突时弹出的外部合并工具?我尝试将环境变量“SVN_MERGE”设置为指向 TortoiseMerge.exe,但这似乎还不够。 TortoiseMerge 只是在我选择“l”(启动外部工具)时弹出,询问我要合并哪些文件。我希望将这些信息自动推送到工具中。

有什么想法吗?

【问题讨论】:

    标签: svn tortoisesvn tortoisemerge


    【解决方案1】:

    创建一个如下所示的 bat 脚本:

    "c:\Program Files\TortoiseSVN\bin\TortoiseMerge.exe" /base:"%1" /theirs:"%2" /mine:"%3" /merged:"%4"
    

    然后将 SVN_MERGE 环境变量设置为那个 bat 脚本:

    set SVN_MERGE=c:\bin\svnmerge.bat
    

    【讨论】:

      【解决方案2】:

      我不知道您使用的是哪个版本的 Subversion,所以我将尝试参考最新版本的 Subversion documentation 中的信息,用于 1.6。 (他们在该页面上添加了“如果您为特定部分添加书签或链接,则这些链接可能会因继续开发而失效。”但是没有 1.6 的稳定版本。)

      首先,bad news

      要使用合并工具,您需要 要么设置 SVN_MERGE 环境 变量或定义 merge-tool-cmd Subversion 中的选项 配置文件(见第 称为“配置选项” 更多细节)。颠覆会过去 合并工具的四个参数: 文件的基本版本, 从收到的文件的修订 服务器作为更新的一部分,副本 包含本地文件的文件 编辑和文件的合并副本 (其中包含冲突标记)。如果 您的合并工具需要参数 以不同的顺序或格式,您将 需要为 要调用的颠覆。

      稍微好一点的消息是,Subversion 在某种程度上已经预料到了您的问题。见Using External Differencing and Merge Tools部分;有外部合并工具包装器的模板。

      在您的具体情况下,TortoiseMerge documentationan appendix 解释如何从命令行使用它。基本开关是/base/mine/theirs,但您可能想要使用更多(毕竟您正在编写自己的包装脚本)。 TortoiseMerge 还允许命令的“简化形式”:

      TortoiseMerge BaseFilePath MyFilePath TheirFilePath
      

      将合并结果返回给 Subversion 的方法是将合并的文件写入标准输出并返回适当的值。这些信息放在 Subversion 手册的包装模板中的显眼位置。

      【讨论】:

      • 谢谢。最终在帮助中找到了“Using External Differencing and Merge Tools”。
      猜你喜欢
      • 2014-10-23
      • 2014-10-19
      • 2011-06-15
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 2012-01-08
      • 2018-06-20
      • 1970-01-01
      相关资源
      最近更新 更多