有时候,你可能拥有“过多”的好东西。Git Flow 当然也是如此,这是一个著名的软件开发工作流程,它提供了多种选择,但却会让用户陷入困境。
为了消除容易引起混乱的复杂性、简化开发流程,我们推出了极狐GitLab Flow。极狐GitLab Flow 为 Git 工作引入了议题跟踪功能,简化了流程,消除了混乱。
Git Flow 的问题
要想了解极狐GitLab Flow 的工作原理,不妨先看看它试图解决的问题。在 Git Flow 中,有两个主要的痛点,都涉及到不必要的分支切换。
Git Flow 强制开发者使用develop
分支而不是master
分支。因为大多数工具都默认使用 master,所以涉及到大量的分支切换。另一个让人烦恼的地方是hotfix和release
分支,这对大多数组织来说显得过于繁琐,而对实践持续交付(CD)的公司来说则完全没有必要。
这让我们想到了极狐GitLab Flow——一个让一切都变得简单和包容的工作流程。
极狐GitLab Flow:一个简化的分支策略
极狐GitLab Flow 将特性驱动开发和特性分支与议题跟踪相结合。极狐GitLab Flow 将 Git 工作流程与议题跟踪系统整合在一起,提供了一种简单、透明、高效的 Git 工作方式。
极狐GitLab Flow 是一种让代码和议题跟踪器之间的关系更加透明的方式。代码库的每一次修改都是从议题跟踪系统中的一个议题开始的。当你完成编码或想要讨论代码时,你可以打开一个 Merge Request(合并请求)。当代码审核完成后,审核员会将该分支合并到 Master 中。通过使用 GitLab 工作流,团队可以通过将主分支合并到production
分支来部署代码,同时可以快速识别生产环境中的代码版本,使他们能够快速识别哪些代码在生产中。在这个工作流程中,提交只流向下游,确保所有的东西在全面的环境中测试。
极狐GitLab Flow 避免了 Git Flow 所伴随的发布、标记和合并的额外开销。
简而言之,极狐GitLab Flow:
- 所有的功能和修正都会先进入 master
- 允许
production
或stable
的分支- 错误修复/快速修复补丁是从 master 中拣选(cherry-picked)出来的。
极狐GitLab Flow 将构思推进到生产阶段的方式,并让每个人都能了解所需信息并提高工作效率。我们确定了开发过程中必须经历的10 大关键阶段,以使软件能够投入生产。极狐GitLab Flow 可以轻松地支持所有阶段进行核算,同时继续提供开发生命周期的全面可见性。
广义上讲,极狐GitLab Flow 主要分为三个领域:feature
(特性) 分支、production
(生产) 分支和release
(发布) 分支。
feature
分支是实际开发工作发生的地方。开发者创建一个针对功能或 bug 修复的分支,并在那里完成所有工作,而不是在 master 分支上。一旦工作完成,开发人员就创建一个 Merge Request(合并请求),将 feature 分支的内容合并到 master 分支。
production
分支本质上是一个整体–一个单一的长期运行的生产发布分支,而不是单个分支。可以为每个可部署的版本创建一个标签,以便跟踪这些细节。
最后,如果你向客户发布软件,那么release
分支是关键。每发布一个新版本,你都会从 master 创建一个稳定分支,并决定一个标签。如果你需要做一个补丁发布,一定要拣选(cherry-pick)出关键的 bug 修复,不要直接提交到稳定分支。
遵循准则
想让极狐GitLab Flow 发挥最大的作用?这里有几条准则强调了测试的重要性,即使在 CI 环境中也是如此。
-
测试所有的 Commits(提交)。不要等到所有的东西都合并到
master
分支后才进行测试。每次提交都进行测试,以便在过程中更早发现问题。 -
在所有的 Commits(提交) 上运行一次全部的测试用例,即使你必须并行运行测试。
-
[代码审查] 先于 [合并到
master
]。不要指望一周结束前的测试查出所有的问题。随着提交进行代码审核,这样更容易查出问题,其他同事也可以集思广益提出解决办法。
极狐GitLab Flow 有什么好处?
极狐GitLab Flow 提供了一种简单、透明、高效的 Git 工作方式。使用极狐GitLab Flow,开发者可以在不同的环境中协作并维护多个版本的软件。极狐GitLab Flow 减少了发布、标记和合并的开销(这是其他类型 Git 工作流程中常见的挑战),创造了一种更简单的代码部署方式。提交流向下游,确保每一行代码都在所有环境中得到测试。任何规模的团队都可以使用极狐GitLab FLow,它具有适应各种需求和挑战的灵活性。