我一直在阅读使用优秀且免费的Version Control with Subversion书籍进行分支/合并Subversion 1.5。我想我了解如何使用Subversion命令行客户端来执行我最常需要的操作,这些操作是:
使用中继更改
更新分支从分支机构的工作目录中运行:
svn merge http://svn.myurl.com/proj/trunk
将分支合并为中继
从trunk的工作目录运行:
svn merge --reintegrate http://svn.myurl.com/proj/branches/mybranch
但是,我们使用TortoiseSVN 1.5作为Subversion的接口。我想知道如何最好地使用TortoiseSVN执行这些操作。新对话框在主菜单上提供三个不同的选项。
根据我的收集,TortoiseSVN总是使用以下语法执行svn。
svn merge [--dry-run] --force From_URL @ revN To_URL @ revM PATH
此外,重新整合分支经常会失败并显示一条消息,指出某些目标尚未合并,因此无法继续,因此我不得不使用选项#3。
我的问题是:
修改
通过“干运行”测试我发现命令行Subversion操作
svn merge http://svn.myurl.com/proj/trunk
类似于TortoiseSVN中的选项#1(合并一系列修订版),只要我将修订范围留空。
答案 0 :(得分:242)
我无法正确地按照其他答案,这里有更多的假人指南...
您可以按照trunk -> branch
或branch -> trunk
的方式执行此操作。我总是首先trunk -> branch
修复那里的任何冲突,然后合并branch -> trunk
。
答案 1 :(得分:28)
行为取决于您的存储库具有哪个版本。 Subversion 1.5允许4种类型的合并:
1.5之前的Subversion只允许前两种格式。
从技术上讲,您可以使用前两种方法执行所有合并,但最后两种方法可以启用subversion 1.5的合并跟踪。
TortoiseSVN的选项会在您的存储库为1.5+时将范围或修订映射合并到方法3,或者在存储库较旧时将方法1合并到方法3。
将功能合并到发布/维护分支时,应使用“合并一系列修订”命令。
只有当您想要将分支的所有功能合并回父分支(通常是主干)时,您应该考虑使用“重新整合分支”。
最后一个命令--Merge两个不同的树 - 仅在您想要超出正常的分支行为时才有用。 (例如,比较不同的版本,然后将差异合并到另一个分支)
答案 2 :(得分:12)
您应该使用“合并修订范围”。
要将更改从主干合并到分支,请在分支工作副本内选择“合并修订范围”,然后输入主干URL以及要合并的开始和结束修订。
以相反的方式合并主干中的分支。
关于--reintegrate标志,请查看此处的手册:http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-reintegrate
答案 3 :(得分:1)
看看svnmerge.py。它是命令行,不能被TortoiseSVN调用,但它更强大。来自FAQ:
传统的颠覆会让你 合并更改,但事实并非如此 “记住”你已经合并的东西。 它也没有提供方便 从存在中排除变更集的方法 合并。 svnmerge.py自动化了一些 工作,并简化它。 SVNMERGE 还会创建一个提交消息 记录来自所有事情的消息 合并。
答案 4 :(得分:0)
Shift-Right单击该文件夹并选择TortoiseSVN - >合并所有