我们使用 Subversion,除了像我这样的少数人之外,几乎没有在 Subversion 中进行分支和合并的经验。我的 Subversion 经验仅限于简单的功能分支,其中合并和树冲突虽然并不罕见,但解决起来并不难。
鉴于此,我正在帮助管理一个项目,在该项目中,我们当前对主干方法的承诺根本无法满足我们的需求。我向我的本地化团队介绍了功能分支和合并,我们取得了一些成功。然而,简单的特征分支仍然无法回答我们所有的问题,例如:
- 我们如何为这个版本和后续版本并行开发代码?
- 什么代码被认为是稳定的?
- 什么(开发中)代码将进入下一个版本?
- 哪些(开发中的)代码将进入后续版本?
- 我们的测试、验收或生产环境是什么版本的代码?
- 我们如何将并发开发活动与已知的稳定版本集成,以减少引入错误和不完整的工作?
- 我们如何为已发布的代码提供热修复?
- 我们如何从源代码控制中知道当前正在进行哪些开发活动?
- 我们如何在不破坏当前代码库的情况下进行实验或研发?
似乎 这里定义的 git-flow可以回答很多这些问题。我在 Mercurial 中尝试了这种方法,似乎也可以在那里实现这种方法。遗憾的是,此时迁移到 DVCS 是不可能的。
然而,我在 Subversion 中模仿这种方法的短暂尝试因许多合并和树冲突而失败。合并选项和边缘情况众多且令人费解。
可以使用 Subversion 来实现git-flow,如果可以,痛苦程度如何?