【问题标题】:Multi-branching model多分支模型
【发布时间】:2016-01-12 13:32:27
【问题描述】:

目前我有一个关于我应该使用的分支模型的任务。 现在我有主分支,我不时分支发布分支以发布有关新功能的分支。这就是我现在的分支模型的样子。

master
|
|---- release 1.0 branch
|   |
|   |
|   |
|   |----- *(1) needed branch
|   |    |
|   |    |
|   |    |
|   |    |
|----    |
|---------
|
|---- release 1.1
|   |
|   |----- needed branch
|   |    |
|   |    |
|   |

*(1) - 每次为功能关闭发布分支时,我都会创建新功能分支,然后在下一个之前合并这个(“需要的分支”) 释放。

阅读本文可能会提出几个问题。

我会在给出问题时对其进行编辑,以便在帖子中给出答案

  1. 如果您需要更多功能,为什么要关闭发布分支? - 问题是我需要在开发“结束”后的任何时候拥有稳定的分支(发布)。

我想完成什么?

这种分支模型的问题在于,我可能有很多功能,并且每个功能都针对不同的客户,而且许多客户不想再等 1 或 2 周直到下一次部署。我正在考虑为每个客户创建分支并在那里推送功能,每当客户想要获得给定的功能时,我都可以从那里部署而不会影响其他客户。因为现在这是不可能的。但这确实是一种糟糕的方法,因为随着客户的增长,分支机构也会增长。

我想要更优雅的方法。我知道在 cmets 中会有很多问题,所以请询问他们,看看我是否可以回答他们并提出解决方案或至少一个想法。

【问题讨论】:

    标签: git branching-and-merging


    【解决方案1】:

    听起来你的问题不是 Git:你的问题是人。既然这些人付钱给你,大概,这似乎是正确的问题!

    我会这样做:

    |
    * tag:r1
    |\______________________
    |   \             \     \
    |    * feature1   WIP2  WIP3
    | __/              |
    |/                 |
    * tag:r2           * feature2
    | ________________/
    |/
    * tag:r3
    |
    master
    

    换句话说,我会从master 完成我的所有发布,以及我在功能分支上的所有工作。当一个功能完成、测试、并且客户想要它时,我才会合并到master,重新测试,然后发布另一个版本。这样,master就永远不会处于开发状态;它总是“刚刚发布”,或“即将发布”(或闲置)。

    如果 WIP3(“进行中的工作 3”)需要很长时间来开发,则图表将如下演变:

    |
    * tag:r1
    |\__________
    |           \
    |           WIP3
    * tag:r2     |
    |\__________ |
    |           \|
    |            * merge
    * tag:r3     |
    |\__________ |
    |           \|
    |            * merge
    |            |
    |            * feature3
    | __________/
    |/
    * tag:r4
    |
    master
    

    (我已经删除了 feature1feature2 分支,现在它们已合并,但您仍然会在历史记录中看到多个路径。)

    如果您发现客户想要某个旧版本的错误修复版本(也许他们为支持付费,但没有为新功能付费?),那么您总是可以从标签创建发布分支:

    |
    * tag:r1
    |
    * tag:r2
    |\_________
    * tag:r3   \
    |          * bugfix
    * tag:r4   |
    |          * tag:r2.1
    master     |
               release2.x_branch
    

    【讨论】:

    • 这实际上是一个很好的方法,但我需要在接受答案之前对其进行调查,但是是的,我正在寻找类似的东西。我不知道您是否注意到,但您的分支模型就像垃圾收集器一样工作,或者至少这个想法非常接近。感谢您的提醒,我会看看我能做什么并进一步通知您:)
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 2012-12-21
    • 2016-10-29
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 2017-12-01
    • 2012-03-05
    相关资源
    最近更新 更多