什么是实现用下面的工作流的首选方法Git
或Subversion
(我有更多的兴趣Git
版本,但比较肯定将是有益的):
比方说,我们最近有产品的主要版本,并有一个叫特定polisihin分支
release-2.0.x
。发展再持续几个特性分支合并到
master/trunk
(他们以后将成为即将到来的部分release-2.1.x
)。现在,在某些时候另一个特征(即
critical-feature
)的开发和重新合并到master/trunk
。 我们认识到,这个功能是非常重要的,我们要反向移植它release-2.0.x
。
这里是一个小pseudographic插图所描述的情况。 需要注意的是在顶部之间的一切分歧树带来release-2.0.x
和当前的master/trunk
,并导致合并问题 (否则我可以简单地合并critical-feature
,避免写这个问题:)
(features added since 2.0.x, which
should not be backported)
^ ^ ^
| | | (code refactorings done
| | | in master/trunk)
\ | / (*) (*) (*)
-------------------------------------------------------> master/trunk
| |
| |
| |
\ release-2.0.x \ critical-feature
(should be backported)
问题:
什么是执行功能从向后移植的最佳途径
VCS
观点?这应该做一个简单的
merge
相应的critical-feature
与冲突解决冲突的分支?或者应该这样做的
cherry-pick
的提交,它融合了critical-feature
到master/trunk
当它这样做? 或者甚至为一组的cherry-picks
每个提交的critical-feature
分支?你可以建议一些对冲突解决过程? 你应该做一个,如果之间的电流差
release-2.0.x
和master/trunk
是如此巨大,是“天真”向后移植导致了巨大的冲突量因代码重构和缺少功能或API
,这是后加release-2.0.x
?请问
Git
或Subversion
有一些具体的事情来提供该程序,除了标准的合并或挑肥拣瘦的做法? 我想, 再过当量将不会在情况下有益的,当冲突的量是巨大的,但是,很明显,我可能是错的。