「研发部」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具有许多优势,但它并不是唯一正确的版本管理策略。在选择版本管理工具和方法时,团队应根据项目的具体需求和团队的工作方式做出决策。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/246936.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis-Plus入门

Mybatis-Plus入门 MyBatis-Plus 官网:https://mp.baomidou.com/ 1、简介 MyBatis-Plus (简称 MP) 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、 提高效率而生。 https://github.com/baomidou/mybatis-p…

python数据类型-字符串

1 表示方式 python单行字符串用单引号’内容’或双引号"内容"表示, 多行字符串用三引号表示,‘’‘换行内容’或"““换行内容””", str()函数可将其它类型转换为字符串类型 a henry b "Tom" c 窗前明月…

什么是协方差矩阵?

协方差矩阵(Covariance Matrix)是一个用于衡量多个变量之间相互关系的工具,在统计学和数据分析领域中非常重要。这个矩阵展现了每一对变量之间的协方差。协方差是衡量两个变量如何一起变化的度量;如果两个变量的协方差是正的&…

C/C++ - Auto Reference

目录 auto Reference auto 当使用auto​​关键字声明变量时,C编译器会根据变量的初始化表达式推断出变量的类型。 自动类型推断:auto​​关键字用于自动推断变量的类型,使得变量的类型可以根据初始化表达式进行推导。 初始化表达式&#x…

oracle19.22的patch已发布

2024年01月16日,oracle发布了19.22的patch 具体patch如下 Reserved for Database - Do not edit or delete (Doc ID 19202401.9) 文档ID规则如下 19(版本)年份(202x)(季度首月01,04,07,10).9 往期patch no信息和下…

[论文阅读] |RAG评估_Retrieval-Augmented Generation Benchmark

写在前面 检索增强能够有效缓解大模型存在幻觉和知识时效性不足的问题,RAG通常包括文本切分、向量化入库、检索召回和答案生成等基本步骤。近期组里正在探索如何对RAG完整链路进行评估,辅助阶段性优化工作。上周先对评估综述进行了初步的扫描&#xff0…

每次请求sessionid变化【SpringBoot+Vue】

引言:花了一晚上的时间,终于把问题解决了,一开始后端做完后,用apifox所有接口测试都是可以的,但当前端跑起来后发现接收不到后端的数据。 当我写完前后端,主页面和获取当前页面信息接口后,配置了cros注解 CrossOrigin…

支持向量机(SVM)详解

支持向量机(support vector machines,SVM)是一种二分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机。 1、线性可分支持向量机与硬间隔最大化 1.1、线性可分支持向量机 考虑一个二分…

Vulnhub-dc6

信息收集 # nmap -sn 192.168.1.0/24 -oN live.port Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-25 14:39 CST Nmap scan report for 192.168.1.1 Host is up (0.00075s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 192.168.1.2…

Java 字符串 10 字符串相关类的底层原理

底层原理1,底层原理2 底层原理3: 分两种情况: 1、等号右边没有变量: 2、等号右边有变量: 两个对象,一个是StringBuilder,一个是String,浪费空间,性能不高 在jdk8之前&am…

WinRAR压缩包高级技巧:永久设置压缩包单个或批量单独压缩成包并且不内嵌文件夹,解压保留原始时间设置

目录点击跳转:WinRAR压缩包高级技巧:永久设置压缩包单个或批量单独压缩成包并且不内嵌文件夹,解压保留原始时间设置 解压永久设置1 解压保存原始时间 压缩永久设置1 默认压缩成zip手机电脑都通用的格式2 默认压缩文件不多额外嵌套一层文件夹&…

Java复习系列之阶段二:数据库

1. 基础语法 1.1 DQL(数据查询语句) 执行顺序: from、join 、on、where、group by、having、select、distinct、order by、limit 1.2 DML(数据修改语言) 对数据表的增删改 insert into update set delete form 1.…

RTP工具改进(五)--使用qt

前篇 第四篇 RTP工具改进(四) - rtmp协议推送 前面使用的工具一直为mfc,今天将使用qt 来做界面,使用qt 来进行程序和协议的编写,qt部分目前还不包括rtp ps流和rtmp,暂时只有rtp 直接传输,关于rtmp协议和ps流协议&…

Qt/QML编程之路:ListView实现横排图片列表的示例(40)

ListView列表,在QML中使用非常多,排列一个行,一个列或者一个表格,都会用到ListView。 ListView显示从内置QML类型(如ListModel和XmlListModel)创建的模型中的数据,或在C++中定义的从QAbstractItemModel或QAbstract ListModel继承的自定义模型类中的数据。 ListView有一…

[GYCTF2020]Ezsqli1

打开环境,下面有个提交表单 提交1,2有正确的查询结果,3以后都显示Error Occured When Fetch Result. 题目是sql,应该考察的是sql注入 简单fuzz一下 发现information_schema被过滤了,猜测是盲注了。 测试发现只要有东…

(七)for循环控制

文章目录 用法while的用法for的用法两者之间的联系可以相互等价用for改写while示例for和while的死循环怎么写for循环见怪不怪表达式1省略第一.三个表达式省略(for 改 while)全省略即死循环(上面已介绍) 用法 类比学习while语句 …

mac配置L2TP连接公司内网

1. 打开系统设置 2. 打开网络 3. 点击网络页面其他服务右下角三个点,添加VPN配置中的L2TP 4. 配置VPN,服务器填写公司的服务器ip,共享密钥没有可以随便填写 5. 打开终端编辑文件 sudo vim /etc/ppp/opt…

华为机考入门python3--(4)牛客4-字符串分隔

分类:字符串 知识点: 复制符号* 复制3个0 0*3 000 字符串截取 截取第i位到j-1位 str[i:j] 题目来自【牛客】 input_str input().strip()# 先补齐 if len(input_str) % 8 ! 0: input_str 0 * (8 - len(input_str) % 8) # 每8个分 out…

哪些 3D 建模软件值得推荐?

云端地球是一款免费的在线实景三维建模软件,不需要复杂的技巧,只要需要手机,多拍几张照片,就可以得到完整的三维模型! 无论是大场景倾斜摄影测量还是小场景、小物体建模,都可以通过云端地球将二维数据向三…

matplotlib实现动画效果

实现正弦波动画 import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation import numpy as np# 创建图像和轴 fig, ax plt.subplots()# 生成平均分布在0~2*pi之间的100个坐标点 x_data np.linspace(0, 2 * np.pi, 100) # 画出初始图 line, ax.plo…