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