Svn 如何在要素分支和主干之间合并修订

Svn 如何在要素分支和主干之间合并修订,svn,branching-and-merging,Svn,Branching And Merging,我有两个来自主干的功能分支,都涉及不同模块中的大型代码重组,功能A和功能B。两者都与主干保持同步;行李箱必须保持稳定 在对Feature-B进行工作的中途,我意识到对Feature-a上最近实现的共享库的更改将极大地有利于Feature-B。我还不想将此更改放在主干中,并且我无法完全合并分支,因为Feature-a上的其余代码不稳定 因此,在分支之间进行合并,从a到B选择修订,以仅合并此功能: svn合并-r 1786:1795^/proj/branchs/Feature-A 我不知道以后重新集

我有两个来自主干的功能分支,都涉及不同模块中的大型代码重组,功能A和功能B。两者都与主干保持同步;行李箱必须保持稳定

在对Feature-B进行工作的中途,我意识到对Feature-a上最近实现的共享库的更改将极大地有利于Feature-B。我还不想将此更改放在主干中,并且我无法完全合并分支,因为Feature-a上的其余代码不稳定

因此,在分支之间进行合并,从a到B选择修订,以仅合并此功能:

svn合并-r 1786:1795^/proj/branchs/Feature-A

我不知道以后重新集成分支时是否会遇到麻烦。我预计Feature-B比Feature-a完成得快得多。在这一点上,我们的正常程序是将Feature-B重新集成到主干中,然后将主干合并到Feature-a中以保持同步。我很难预先确定这是否会导致冲突,因为A被合并到B中,现在这些更改被重新合并回来,但以一种迂回的方式,通过主干


svn书中提到,如果我想再次处理分支,则只有在将分支重新集成到主干中之后,才能使用--record进行额外的合并。我怀疑在这种情况下我可能需要这样的东西,但我无法确定是否有必要。

我个人不使用
--将
与长期功能分支重新整合

在您的情况下,您可以正常地将Feature-B分支合并回主干,然后在将Feature-B分支合并回主干之前,请对有问题的修订版执行
--仅记录

假设命令:

svn merge -r 1786:1795 ^/proj/branches/Feature-A .
创建了2000版(在分支特征B中)

然后,在将Feature-B合并回主干之前,必须执行以下操作:

svn merge -c2000 --record-only ^/proj/branches/Feature-B .
最后一步是将功能B分支完全合并到主干:

svn merge -r <begin>:<end> ^/proj/branches/Feature-B .
svn合并-r:^/proj/branchs/Feature-B。

这确实会给您带来问题

如果从A合并到B的更改包括其他文件,则当您重新整合B时,这些文件将添加到主干中。但是,如果尝试从主干合并到(在重新集成A之前需要执行此操作),则合并将尝试将已存在于中的文件重新添加到,从而导致树冲突

--仅记录合并用于阻止特定修订的重新合并,以使特征分支在重新整合后保持活动状态。因此,如果您将B重新整合到trunk创建修订版100中,那么您--只将merge trunk修订版100记录回B,这意味着当您从trunk在B中执行同步合并时(svn merge^/Project1/trunk)修订版100将被跳过,不会重新合并回B。这避免了潜在的冲突,并使功能分支在重新整合后继续使用并与主干重新同步


不幸的是,我不认为只记录合并可以帮助您避免这种情况下的冲突,因为重新整合合并不会检查要合并的分支中的单个修订,它只是对分支和主干的当前状态进行了区分,并将其应用于主干工作副本。

考虑到我一直在进行从主干到功能-B的定期合并,如果不重新整合,这真的有效吗?我的理解是,如果我尝试在不重新整合的情况下进行合并,我会遇到一大堆冲突,因为主干的更改已复制到分支。谢谢,这是一个非常有用的澄清,我知道树冲突会发生在哪里。