「研发部」GitFlow规范-升级版(二)

前言

上一篇文章简单整理过一次产研团队的GitFlow《Git 分支管理及Code Review 流程 (一)

GitFlow是一种流行的Git分支管理策略,它提供了一种结构化的方式来管理项目的开发和发布流程。以下是GitFlow规范的主要组成部分:

主要分支:

  • master:主分支,存储的是正式环境的代码,它是稳定并且可部署到生产环境的。此分支应该是只读的,不允许直接在上面进行开发。
  • develop:开发分支,所有新的功能开发都应该基于这个分支。它是master分支的副本,并且是集成测试的场所。

辅助分支:

  • feature:功能分支,用于开发新功能。每个功能都应该有一个自己的分支,它的命名规则可以是feature/*,比如feature/new-login。当功能开发完成并通过测试后,它会合并到develop分支。
  • release:预发布分支,用于准备新的生产版本。它基于develop分支创建,并且用于修复在预发布阶段发现的问题。它的命名规则可以是release/*,比如release/1.2.0。当预发布阶段结束后,它会合并到master和develop分支。
  • hotfix:热修复分支,用于修复生产环境中的紧急问题。它基于master分支创建,并且当问题修复后,它会合并到master和develop分支。它的命名规则可以是hotfix/*,比如hotfix/1.2.1。

工作流程:

  • 当开始一个新功能时,从develop分支创建一个新的feature分支。
  • 在feature分支上开发新功能,并通过单元测试。
  • 完成后,将feature分支合并到develop分支,并删除feature分支。
  • 当准备发布新版本时,从develop分支创建一个新的release分支。
  • 在release分支上进行集成测试,并修复发现的问题。
  • 完成后,将release分支合并到master和develop分支,并删除release分支。
  • 如果在生产环境中发现紧急问题,从master分支创建一个新的hotfix分支。
  • 在hotfix分支上修复问题,并通过测试。
  • 完成后,将hotfix分支合并到master和develop分支,并删除hotfix分支。

以上就是GitFlow规范的基本内容。这种策略通过明确每个分支的角色和生命周期,以及定义清晰的工作流程,有助于保持代码的整洁和可维护性,提高团队之间的协作效率。

结合以上&目前的产研团队的GitFlow规范进行整理

1、产研开发规范

1.1 规范目标

  • 确保业务需求所有上生产的代码均为测试过的代码
  • 确保上线分支代码不被遗漏
  • 开发流程规范化,合理化,便于管理

1.2 产研开发流程

如上图:

  • 虚线上方为开发流程,虚线下方为每个流程需要的产出,色块的不同代表负责人为对应的角色
  • 角色分为组长、产品、主R、开发、测试,分别用不同的色块代表

重要阶段必要参与人:

  • 需求评审:产品、主R、开发、测试,负责角色为产品
  • 设计评审:产品、组长、主R、开发、测试,负责角色为开发
  • 用例评审:测试、产品、开发,负责角色为测试
  • 冒烟:开发、测试、产品(建议),负责角色为开发
  • 值班观察:负责角色为主R,可安排对应开发值班

2、Git分支规范

2.1 测试分支

  • 【强制】命名:test-上线日期,示例:test-20221206
  • 【强制】由项目主R建立,并建立分支保护,保护规则:必须经过Code Review
  • 【强制】不允许直接推送代码至测试分支,必须通过合并,如产生冲突,在开发分支解决后再合并

2.2 开发分支

  • 【强制】命名:feature-JIRA编号,示例:feature-JIRA001,feature-OFFICE001
  • 【强制】由开发从 master 分支拉取创建

2.3 热修复分支

  • 【强制】命名:hotfix-JIRA编号,示例:hotfix-JIRA001
  • 【强制】必须从 master 分支拉取

2.4 master分支

  • 【强制】分支保护模式,必须通过Code Review 合并

3、效能平台使用规范

3.1 环境发布分支规范

3.1.1 现状

  • prod环境:取master / tag版本分值进行上线
  • release环境:取master / tag版本分值进行发布
  • uat环境:只能发布 hotfix*、master 分支
  • test环境:只能发布 master、dev* 分支
  • dev环境:只能发布 master、dev* 分支

3.1.2 修改

  • prod环境:只能发布master/tag版本分支封板代码
  • release环境:取master / tag版本分值进行发布
  • uat环境:只能发布hotfix*、master分支 ,临时支持test*分支
  • test环境:只能发布master、test*、hotfix*分支
  • dev环境:不限制

3.2 环境使用规范

  • dev环境:开发,团队开发同学统一使用。
  • test环境:测试,开发完统一合并该环境供测试团队同学进行冒烟测试。
  • uat环境:开发,预其他团队一对一环境,涉及到外部门合作的统一在该环境进行回归测试。
  • release环境:上线前的预生产环境,数据使用的跟生产数据一致,用真实数据进行测试的环境。
  • prod环境:生产环境,正式外部访问

3.3 遇到问题

  • 测试分支稳定性相对不高,如单独弄测试分支流程会比较复杂
  • 需要多套环境支持,可合并测试分支后一起测试
  • git项目权限问题,需要运维给组长、可以针对主R开通相关权限

4、总结

对比其他版本管理工具,GitFlow有哪些优势?

GitFlow是一种Git分支管理策略,它与其他版本管理工具相比具有以下优势:

  • 清晰的分工合作:GitFlow将开发过程分解为不同的分支,每个分支都有明确的职责,比如特性开发、发布准备和维护。这有助于团队成员之间更好地协作,避免代码冲突和混乱。
  • 稳定的发布流程:通过特定的分支(如Release和Master分支),GitFlow确保了每次发布都是经过测试和稳定的版本。这有助于提供高质量的软件,并减少生产环境中的问题。
  • 灵活的热修复:当生产环境中出现紧急问题时,GitFlow的Hotfix分支允许开发团队快速修复问题并发布,而不影响其他功能的开发。这有助于减少停机时间和维护成本。
  • 高效的版本管理:GitFlow让版本追踪更加明确,团队可以清楚地知道每个版本的功能和改动。这有助于回滚到以前的版本或比较不同版本之间的差异。
  • 强大的分支模型:GitFlow的分支模型非常灵活,支持多个并行开发流程,包括新功能开发、发布准备和修复生产问题等。这有助于提高开发效率和响应速度。
  • 广泛的适用性:GitFlow不仅适用于有计划发布周期的项目,还可以用于持续交付的DevOps最佳实践。这使得GitFlow成为各种规模和类型项目的理想选择。

需要注意的是,虽然GitFlow具有许多优势,但它并不是唯一正确的版本管理策略。在选择版本管理工具和方法时,团队应根据项目的具体需求和团队的工作方式做出决策。

相关推荐
小牛itbull27 分钟前
ReactPress:重塑内容管理的未来
react.js·github·reactpress
晓理紫7 小时前
使用git lfs向huggingface提交较大的数据或者权重
git
我不是程序猿儿8 小时前
【GIT】sourceTree的“当前分支“,“合并分支“与“检出分支的区别
git
鱼满满记8 小时前
1.6K+ Star!GenAIScript:一个可自动化的GenAI脚本环境
人工智能·ai·github
梦魇梦狸º11 小时前
腾讯轻量云服务器docker拉取不到镜像的问题:拉取超时
docker·容器·github
_OLi_15 小时前
IDEA中新建与切换Git分支
java·spring boot·git
大卡尔15 小时前
Reviewbot 开源 | 为什么我们要打造自己的代码审查服务?
devops·code review·静态检查·工程效率
Huazie16 小时前
一篇搞定 Hexo Diversity 主题接入!支持多主题自由切换!
javascript·github·hexo
极小狐17 小时前
驭码上新,AI Code Review、基于代码库的知识问答,让研发起飞
gitlab·devsecops·devops·极狐gitlab·安全合规
PyAIGCMaster19 小时前
ubuntu下安装 git 及部署cosyvoice(1)
git