【发布时间】:2012-08-21 09:17:17
【问题描述】:
使用Git 或Subversion 实现以下工作流程的首选方法是什么(我对Git 版本更感兴趣,但比较肯定会有用):
-
假设我们最近发布了该产品的主要版本,并且有一个名为
release-2.0.x的特定 polisihin 分支。随后继续开发,几个功能分支被合并到
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角度执行功能反向移植的最佳方法是什么? -
这是否应该作为具有解决冲突冲突的相应
critical-feature分支的简单merge来完成? -
或者这应该作为提交的
cherry-pick完成,完成后将critical-feature合并到master/trunk中?或者甚至可以为critical-feature分支中的每个提交设置一组cherry-picks? -
您能为解决冲突的程序提供一些建议吗?如果
release-2.0.x和master/trunk之间的当前差异如此之大,“幼稚”的反向移植会由于代码重构和缺少功能或API(在@ 之后添加)而导致大量冲突,该怎么办? 987654345@? -
除了标准的合并或挑选方法之外,
Git或Subversion是否有针对此例程的特定功能?我想 rebase 在冲突数量很大的情况下不会有帮助,但显然,我可能错了。
【问题讨论】:
标签: git svn merge merge-conflict-resolution feature-branch