如何将TortoiseMerge设置为SVN的外部合并工具?

4
有没有可能设置TortoiseMerge(随TortoiseSVN一起提供)作为外部合并工具,当您在使用“svn merge”命令行遇到合并冲突时弹出?我已经尝试将我的环境变量“SVN_MERGE”设置为指向TortoiseMerge.exe,但这似乎还不够。当我选择“l”(启动外部工具)时,TortoiseMerge弹出一个窗口询问我要合并哪些文件。我希望这些信息能自动推送到工具中。
有什么想法吗?
2个回答

5
创建一个类似这样的批处理脚本:
"c:\Program Files\TortoiseSVN\bin\TortoiseMerge.exe" /base:"%1" /theirs:"%2" /mine:"%3" /merged:"%4"

然后将SVN_MERGE环境变量设置为该批处理脚本:
set SVN_MERGE=c:\bin\svnmerge.bat

3
我不知道你使用的Subversion版本,所以我会尝试参考最新版本1.6的Subversion文档中的信息。(该页面上还添加了一句话:“如果你收藏或链接到特定部分,则这些链接可能会因为持续开发而失效。”但是1.6没有稳定版本。)
首先,坏消息
要使用合并工具,您需要设置SVN_MERGE环境变量或在您的Subversion配置文件中定义merge-tool-cmd选项(有关详细信息,请参见“配置选项”部分)。 Subversion将向合并工具传递四个参数:文件的基本修订版本,从服务器作为更新的一部分接收的文件的修订版本,包含本地编辑的文件副本以及合并后的文件副本(其中包含冲突标记)。如果您的合并工具期望以不同的顺序或格式传递参数,则需要编写一个包装脚本以供Subversion调用。
稍微好一点的消息是,Subversion已经预见了您的问题。请参见使用外部差异和合并工具部分;其中提供了外部合并工具包装器的模板。
在您的特定情况下,TortoiseMerge 文档有一个附录,解释如何从命令行使用它。必要的开关是/base/mine/theirs,但您可能想使用更多(毕竟您正在编写自己的包装脚本)。TortoiseMerge还允许使用“简化形式”的命令:
TortoiseMerge BaseFilePath MyFilePath TheirFilePath

将合并结果传回Subversion的方法是将合并后的文件写入标准输出并返回适当的值。这些信息在Subversion手册的包装模板中得到了突出显示。


谢谢。我最终在帮助文档中找到了“使用外部差异和合并工具”的方法。 - Mike Gates

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接