通常,在将 SVN 分支重新集成到主干时,我们会创建如下历史记录:
trunk A---B---D---F---H
\ \ /
branch C---E---G---X
其中G
是合并,H
是重新整合合并,X
删除特征分支。我还了解到 SVN 用于G
和的合并算法存在差异H
。到现在为止还挺好。
然而,有一件事困扰着我:这个答案引用了关于重新集成合并会发生什么的 SVN 文档:“事实上,它通过将最新的主干树与最新的分支树进行比较来做到这一点:由此产生的差异正是你的分支更改!”
由于trunc + changes from branch = trunc + (branch - trunk) = branch
,我得出结论,重新集成合并后的记录状态始终与分支结束时的记录状态完全相同。
现在考虑这段历史:
trunk A---B---D---F---H---I
\ \ /
branch C---E-----G-----X
根据上面的推理,我假设如果I
是重新集成合并,来自提交 H 的更改就会丢失。这是正确的,还是我错过了什么?