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

时间:2010-02-27 19:44:59

标签: svn tortoisesvn tortoisemerge

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

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我不知道您正在使用哪个版本的Subversion,因此我将尝试在最新版本的Subversion documentation中引用1.6中的信息。 (他们在该页面上添加“如果您标记或链接到特定部分,那些链接可能会因继续开发而无效。”但是1.6没有稳定版本。)

首先,bad news

  

要使用合并工具,您需要   要么设置SVN_MERGE环境   变量或定义merge-tool-cmd   Subversion中的选项   配置文件(参见章节   称为“配置选项”   更多细节)。 Subversion将通过   合并工具的四个参数:   BASE修改了该文件   修改收到的文件   服务器作为更新的一部分,副本   包含本地文件的文件   编辑,以及文件的合并副本   (包含冲突标记)。如果   你的合并工具期待参数   你会以不同的顺序或格式   需要为其编写包装脚本   Subversion to invoke。

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

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

TortoiseMerge BaseFilePath MyFilePath TheirFilePath

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

答案 1 :(得分:3)

创建一个如下所示的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