在SVN中合并一系列修订与重新整合之间有什么区别?

Sib*_*Guy 39 svn

我已经阅读了一些文档和博客,关于合并一系列修订和重新整合之间的区别,但我没有得到一件事.

如果我选择一种或另一种方式从分支合并到主干,合并有什么区别?为什么合并一系列修订在某些情况下不起作用,但重新整合成功合并分支到主干?

小智 37

首先,SVN计算要应用的差异的方式在两种方法之间是不同的.通常,当您以挑选方式从一个主干到分支应用一系列修订版X到Y时,例如,SVN计算主干中X到Y的修订版之间的差异,并将其应用于分支.您也可以在另一个方向执行相同的操作,将分支中的更改应用于此方式.

但是,当您将分支重新集成到主干中时,SVN会执行不同的计算.SVN不是计算分支中的修订版X到Y之间的差异并将这些修改应用到干线,而是仅计算整个分支和干线之间的差异.假设您一直在努力使分支机构与主干中的更改保持同步,那么主干和分支之间的重新集成计算的差异将正是分支中尚未进行的所有更改在后备箱里.

SVN 1.6文档(重新整合分支):

然而,当将你的分支合并回主干时,基础数学是完全不同的.您的功能分支现在是重复主干更改和专用分支更改的混搭,因此没有简单的连续修订版本可供复制.通过指定 --reintegrate选项,您要求Subversion 仔细复制 分支特有的更改.(事实上​​,它通过将最新的树干树与最新的树枝树进行比较来实现这一点:产生的差异正是你的树枝变化!)

我不完全确定(多年来我已经忘记了),但我认为在之前版本的SVN中(比如1.5之前的版本),没有合并跟踪和没有分支重新集成选项,所以如果你想合并一个已完成的分支进入主干,你必须使用修改范围方法手动完成.我试图在文档中查找它,但我还没有找到它的参考.

补充阅读

另请参阅Re:为什么--reintegrate需要svn 1.5合并?,这篇评论中指出了这一点.

  • 要去万一有人扔了这一点,那还有寻找这与[SVN]的新版本(http://stackoverflow.com/questions/18444634/tortoisesvn-subversion-1-8-merge-no-more-reintegrate-a -branch-option):`--reintegrate:deprecated` (3认同)

San*_*ken 5

重新整合意味着在您处理功能分支时使用,并且已完成.下一步应该是删除分支.在重新集成之前,您应该使用"修订范围"合并将目标(通常是主干)合并到分支,以将所有符合条件的修订合并到分支.这在重新整合段落的上方略有描述.

"修订范围"合并适用于应该转到某个分支的樱桃挑选修订,例如修复稳定版本分支中的错误.