所以我有这个项目在2个版本中进行并发工作,即trunk和branch1。在某些时候我被告知“不要为rel1做更多的构建,修复rel2中的那些bug。”所以我在branch1中制作了也适用于trunk的错误修正。后来我被告知“如果我们将rel1与那些已知的bug相关联,那将是一个很大的PITA。请在rel1中修复它们。”
所以,我的问题是(〜/ rel1是主干的当前未经修改的工作副本.RevM,RevN是branch1中的修订号,用于我想要合并回主干的一系列修订版本):
如果我做了
cd ~/rel1
svn merge -r RevM:RevN ^/branch1
它会如何影响从分支到后备箱的后期svn merge --reintegrate
?请记住,RevM
之前的branch1中有修订版,RevN
之后会有更多修订版。特别是,当我最终重新整合时,是否我最初在rel1中完成了修复并将它们合并到rel2中,这应该是首先应该做的?
答案 0 :(得分:6)
樱桃采摘从树枝到树干的变化总是在扭曲我的思绪。这是一个适用于您的情况的解决方案,其诀窍是阻止樱桃选择的更改再次合并到分支中。
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"
现在,您应该可以像往常一样再次将rel1
的更改合并到branch1
,并在完成后将您的分支重新整合到rel1中。