是否可以使用"svn merge“命令行将TortoiseMerge (随TortoiseSVN提供)设置为当遇到合并冲突时弹出的外部合并工具?我尝试将我的环境变量"SVN_MERGE“设置为指向TortoiseMerge.exe,但这似乎还不够。当我选择"l“(启动一个外部工具)时,TortoiseMerge就会弹出,询问我要合并哪些文件。我希望将此信息自动推送到工具中。
有什么想法吗?
发布于 2010-03-02 20:25:06
我不知道您使用的是哪个版本的Subversion,所以我将尝试参考Subversion documentation的最新版本1.6中的信息。(他们在该页面上添加了“如果您添加书签或链接到特定部分,这些链接可能会因继续开发而失效。”但是1.6没有稳定的版本。)
首先,bad news
要使用合并工具,您需要在Subversion配置文件中设置SVN_MERGE环境变量或定义
-SVN_MERGE-cmd选项(有关详细信息,请参阅“配置选项”一节)。Subversion将向合并工具传递四个参数:文件的基本修订版、作为更新的一部分从服务器接收的文件修订版、包含本地编辑的文件副本和文件的合并副本(包含冲突标记)。如果您的合并工具需要不同顺序或格式的参数,则需要编写一个包装器脚本以供Subversion调用。
稍微好一点的消息是,Subversion在某种程度上已经预料到了你的问题。参见Using External Differencing and Merge Tools小节;有外部合并工具包装器的模板。
在您的特定情况下,TortoiseMerge documentation提供了an appendix,解释如何从命令行使用它。基本的开关是/base、/mine和/theirs,但是您可能希望使用更多的开关(毕竟,您是在编写自己的包装器脚本)。TortoiseMerge还允许命令的“简化形式”:
TortoiseMerge BaseFilePath MyFilePath TheirFilePath将合并结果传递回Subversion的方法是将合并后的文件写入标准输出并返回适当的值。此信息位于Subversion手册中的包装器模板的显著位置。
发布于 2010-07-15 00:44:49
创建一个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.bathttps://stackoverflow.com/questions/2348692
复制相似问题