Git
使用or实现以下工作流程的首选方法是什么Subversion
(我对这个版本更感兴趣Git
,但比较肯定会有用):
假设我们最近发布了该产品的主要版本,并且有一个特定的 polisihin 分支,名为
release-2.0.x
.然后开发继续进行,几个功能分支被合并到
master/trunk
(它们稍后将成为即将到来的部分release-2.1.x
)。现在,在某个时候,另一个特性(即
critical-feature
)被开发并合并回master/trunk
. 我们意识到这个特性是如此重要,以至于我们必须将它反向移植到release-2.0.x
.
这是所描述案例的一个小伪图解。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
我想在冲突数量很大的情况下,重新设置基准不会有帮助,但是,显然,我可能是错的。