【问题标题】:Merging feature branches to release branch instead of trunk合并功能分支以发布分支而不是主干
【发布时间】:2010-02-27 12:40:48
【问题描述】:

我有一个关于两个源代码控制方案的问题,包括功能分支和发布分支:

  • 在场景 1 中,功能分支合并到主干。
  • 在场景 2 中,功能分支合并到最新版本分支。

与情景 1 相比,情景 2 的后果是什么?

这两种方案可能的优点和缺点是什么?


两个场景的更多细节:

  • 所有开发都在功能分支中完成
  • 总是从主干进行分支

场景一(类似于this SO-answer中的描述):

  • 功能分支总是合并到主干
  • 从主干创建一个新的发布分支,当新发布的准备工作开始时
  • 在发布分支进行 QA 和部署后,发布分支中的更改/错误修复将合并到 主干和更新的发布分支
  • 对主干的更改合并到所有功能分支

场景 2:

  • 功能分支总是合并到最新发布的分支
  • 从主干创建一个新的发布分支,当当前发布分支不再接受新功能并开始为最终发布做准备时
  • 在发布分支进行 QA 和部署后,发布分支中的更改/错误修复合并到 trunk
  • 对主干的更改合并到所有功能分支和最新发布分支

【问题讨论】:

    标签: version-control merge feature-branch


    【解决方案1】:

    由于分支完全是关于隔离(请参阅“When should you branch”),这两种情况之间的区别是您希望主分支trunk 具有的角色

    • 场景 2 更适合 静态角色trunk 将代表生产中的内容(偶尔需要合并回当前功能的热修复和下一个发布分支)

    • 场景 1 更适合 动态角色trunk 是各种功能的集成,从那里创建发布分支以整合实际上将成为下一个版本。

    【讨论】:

    • 感谢您的回答!您对两者可能的优点或缺点有任何意见吗?
    • @Ole:我更喜欢场景 2,其中主干始终代表生产中的内容,并且可以用作新分支的起点。合并到主干更容易(在主干上几乎没有进化),并且主干上的极少数修补程序很小且很少见,使得合并回功能分支也不复杂。场景 1 意味着更多更大的合并。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 2023-01-30
    • 1970-01-01
    • 2021-10-24
    • 2010-09-30
    相关资源
    最近更新 更多