SVN - 无法将分支合并回主干 - 众多树冲突

mit*_*oop 52 svn merge tree-conflict

我有我认为的简单场景 - 使用TortoiseSVN:

1)我创建了一个应用程序的分支(B2)(用于实现图像精灵和JAWR).

2)测试和开发在主干上正常进行.

3)在过去的几天里,我通过以下几次重新设立了分支机构:

3.1)合并主干(按修订范围)到我的branch-b2工作副本,解决合并期间的冲突.

3.2)(在测试branch-b2之后),我提交了基于重新分支的-b2.

这一切都像我预期的那样奏效.但是将分支合并到主干中是有道理的:

4)在branch-b2中提交的所有更新之后; 我确保在trunk和branch-b2上进行SVN更新.

5)然后,我尝试将branch-b2中的(修订范围)合并到主干中.但是,对于任何已添加到主干的新文件,以及随后在我重新添加时添加到branch-b2的新文件,我会遇到树冲突.我不确定解决这些冲突的正确方法是什么.

我见过的最典型的建议是从trunk中删除树冲突文件,然后合并分支; 或者删除整个中继,将分支文件复制过来,然后在中继中将它们作为新版本提交.这些选项似乎都不是一个好主意 - 首先是痛苦,而且看起来他们都会丢失文件修订历史.

我做错了什么,我该如何解决?

Ryt*_*mis 72

听起来你正在使用1.5之前的合并风格并尝试将分支重新集成到主干中.在这种情况下,您要做的是首先确保所有主干更改已合并到分支,然后将分支范围合并到指向主干的工作副本,而不是合并"FROM trunk @HEAD TO分支@HEAD",工作副本指向trunk.在本质上:

"给我所有的改变,让树干与树枝相同".

如果您已将所有主干更改合并到分支,则此方法有效,因为树干和分支之间的唯一区别是分支中所做的更改.

合理?:)

  • 谢谢@Rytmis,我刚刚设法解决这个问题,但我想为Tortoise用户提供翻译.1)将工作副本切换到分支(如果尚未)2)右键单击工作副本,TortoiseSVN>合并>"合并一系列修订",单击"下一步"3)要合并的URL = = Trunk,单击"下一步" ,合并4)将工作副本切换到Trunk 5)右键单击工作副本,TortoiseSVN>合并>"合并两个不同的树",单击Next 6)From:Trunk(使用HEAD修订版)To:Branch(使用HEAD修订版)7)单击下一步,合并.8)提交你的工作副本.DONE (52认同)
  • 当合并的时候,Svn吓到了我:( (4认同)
  • 这个解释解决了我们流程中的几个冲突.多谢你们 :) (3认同)
  • 1.5及以后你可以跳过第一次合并中的修订范围,并使用类似"svn merge --reintegrate branch"的内容进行第二次合并(不能回忆起TSVN gui细节).在缺点方面,重新整合后你将不得不重新分支,因为重新整合对mergeinfo做了一些有趣的事情. (2认同)