由于特定情况,我正在考虑为我当前的工作场所扩展 git-flow 模型。但是我的情况是如此普遍,以至于我很惊讶以前没有人用 git-flow 模型做过这件事,这让我觉得我错过了一个明显的问题。我的问题是:我提议的扩展是否有缺陷?
场景:我有许多开发团队从一个公共代码库开发,我们通过几个(永久)环境发布版本:首先到系统集成环境 (SIT),然后到 UAT 环境,然后到预生产,最后投入生产。这是严格顺序的,尽管任何候选版本都可能在任何环境中失败,因此不会再进一步。因此,以后的每个环境都只是先前环境的一个较慢的版本。
我们正在引入 git 进行源代码控制,我们需要一个工作流,而 git-flow 看起来是一个好的开始。
我们问自己如何随时捕捉(即如何知道)每个环境中的内容。git-flow 模型似乎本质上具有两个核心状态:master
和develop
. 他们有一个“无限的寿命”。其他分支只是“生命周期有限”的“支持分支”。它们的存在只是为了允许开发和从开发到生产(通过临时发布状态)。git-flow 模型基于从开发到发布。
但是,这并没有在逻辑上映射到我们的场景,它具有多阶段的发布顺序。当然,我对develop
分支很好。该master
分支显然确实映射到我们的生产环境。原始的git-flow 描述是这样说的master
:
因此,每次将更改合并回主版本时,根据定义,这都是一个新的生产版本。我们在这方面往往非常严格,因此理论上,我们可以使用 Git 钩子脚本来自动构建我们的软件并将其推出到我们的生产服务器上,每次在 master 上进行提交。
由于是生产的连续记录,我们应该扩展 git-flow 模型以具有 SIT、UAT 和 pre-prod 的相应分支master
似乎是一致的。毕竟,它们是永久环境,具有严格的发布程序。他们只是比生产快一点。
这些额外的、永久的分支位于develop
和之间master
,就像它们对应的环境一样。
这意味着现在可以轻松跟踪每个环境的发布以及每个环境的状态。每个分支的合并也更容易:SIT 分支需要从 合并develop
,UAT 分支需要从 SIT 分支合并,pre-prod 分支需要从 UAT 分支合并,最后master
分支(用于生产)需要来自 pre-prod 分支的合并。后面的每个分支都只是前一个分支的移动速度较慢的版本。
我错过了什么吗?