0

我有两个功能分支:featureA 和 featureB。

FeatureA 是完整的,但没有合并到主干,因为它未经测试,我们还没有准备好测试它。

我正在研究 featureB,并意识到我需要在 featureA 中实现更改才能继续。

最好的方法是什么?我想我有几个选择:

选项1

将 featureA 合并到 featureB 分支(或者如果我小心地获得所有我想要的,可能只是特定的修订),然后恢复我需要的所有更改。

选项 2

重新实现featureB中的变化(这次不会太复杂),整理一下featureA和featureB合并到同一个地方时的冲突。

无论哪种方式,这些功能都将被合并到一个发布候选分支中,以供测试和部署。一旦该 RC 分支被确认为已测试,它将一次性合并到主干中。

4

3 回答 3

3

还有第三种选择:

您可以挑选要合并的内容,然后将其合并。执行从 featureA 到 featureB 的合并,但只合并您感兴趣的修订。然后可选地修复任何剩余的问题。

例如,在 Eclipse 中,这可以很方便地完成,因为合并对话框将让您选择要合并的修订版(或范围)。只需对您需要的所有修订范围重复此操作即可。

于 2009-10-06T11:33:47.807 回答
0

我通过在 svn 中具有以下结构来解决这些问题:

/prod
   /release_20090801
   /release_20090901
/staging
/trunk
/sandbox

开发人员在他们的沙箱中开发,然后在添加功能时合并到主干中。一旦迭代的功能完全完成并准备好进行最终质量检查,主干就会被复制到登台。

因此,在您的场景中,功能 A 可以合并到主干,然后复制到沙箱以进行功能 b 开发。

于 2009-10-06T11:37:58.017 回答
0

好吧,如果这两个功能不涉及对相同源文件的更改,那么在继续开发时将它们分开的最简单方法是创建一个混合工作副本。查看 featureB,并根据需要将单个源文件切换到 featureA。(svn switch如果您需要更多信息,请查阅。)您可以继续在 featureB 中进行更改并将它们签入,而无需实际合并任何 featureA 代码。(这将允许本地开发,但如果您使用持续集成,则会破坏服务器上的构建,因为必要的 featureA 更改将不存在。)

当然,如果 B 依赖于 A,这意味着 A 最终需要经过测试并准备好发布,然后才能完成 B。对我来说,这意味着您现在应该将 featureA 更改合并到 featureB 并在 featureB 上启动开发。您只需要确保将任何修复应用到 f​​eatureA 并将它们合并到 featureB 中。

于 2009-10-06T21:33:29.103 回答