2012-07-12 104 views
2

因此,我有两个版本,即trunk和branch1的并发工作。在某个时候,我被告知:“不要为rel1增加任何版本,修复rel2中的bug”。所以我在branch1中进行了bug修复,也可以应用到trunk。后来,我被告知:“如果我们将rel1与那些已知的bug相关联,这将是一个大的PITA,请在rel1中修复它们。”cherrypick svn合并分支到树干,后面再合并--reintegrate?

所以,我的问题是(。〜/ REL1为主干的电流,修改的工作副本RevM,RevN在BRANCH1版本号的范围内,我要合并到主干修订):

如果我做了

cd ~/rel1 
svn merge -r RevM:RevN ^/branch1 

它将如何影响从分支稍后svn merge --reintegrate到主干?请记住RevM之前的分支1有修改,RevN之后会有更多的修改。特别是,当我最终重新整合时,是否会像我最初完成rel1中的修复并将它们合并到rel2中一样,首先应该这样做?

+0

在你的问题开始时,你把trunk,rel1,rel2等混合了一下。也许你可以解决这个问题,使问题更清楚。 – janitor048 2012-07-20 23:04:16

回答

5

樱桃采摘从一个分支变成树干是一件总是扭曲我的思想。这是一个解决方案,应该在你的情况下工作,诀窍是阻止樱桃采摘的变化再次合并到分支。

cd ~/rel1 
svn merge -r RevM:RevN ^/branch1 
svn commit -m "cherry pick RevM:RevN from branch1 into rel1" 

现在假设这个提交已经创建了RevX。进入您的分支并通过使用--record-only选项来阻止未来合并操作中的此版本。

cd ../branch1 
svn merge -c RevX --record-only ^/rel1 
svn commit -m "mark RevX as already merged to block it from future merge actions" 

现在,你应该能够进一步改变像往常一样再次从合并到rel1branch1也重返你的支进REL1一旦你用它做。

+0

请注意,这应该从svn 1.5起。我有时读过svn上的1.6,应该更聪明地处理这种情况 - 所以也许阻塞并不总是必要的?我真的不知道这是否确实如此。我会在明天尝试做一个测试场景。 总的来说,我的感觉是樱桃采摘从树枝到树干并没有真正得到svn工作方式的很好的支持。 – janitor048 2012-07-20 23:02:39

+0

即使我不完全确定它是正确的,我仍然会接受这一点。它开始出现我从事合并的分支永远不会重新集成,所以我可能永远无法确定会发生什么。 – wades 2012-08-20 18:44:42