一、定义说明
分支名称 分支用途 保护分支
master 主分支,记录发布历史,每次发布版本需要打Tag记录发布信息。 是
release 发布分支,用于测试环境打包。 是
develop 开发分支,记录开发历史,特性开发完成后需要合并到此分支。 否
feature 特性分支,用于记录某个特性的开发历史,上线后,删除对应特性分支。 否
hotfix 修复分支,用于紧急修复线上问题,修复后,删除对应修复分支。 否
二、命名规范
2.1 分支命名规范
分支名使用全部小写方式命名。
master分支、develop分支在创建仓库时进行创建。
release分支在创建仓库时进行创建,如存在多套测试环境,则使用 "/" 分隔后命名。
feature分支由对应开发人员进行创建及删除,使用 "/" 分隔后命名,如feature/topic。
2.2 Commit 提交规范
Commit需清晰表示任务编号(TaskId)、任务名称、修复错误编号(BugId)、错误名称、详细说明、提交人等,统一使用以下格式进行提交。
提交格式: 顶部Header、内容Body、尾部Footer,共三部分。
顶部Header占一行,使用一句话概括此次提交的变更内容。(包括三个字段:type(必需)、scope(可选)和subject(必需)。)
内容Body占多行,详细说明一个个变更点。
尾部Footer占一行,标识关联哪一个task、bug。
各部分详细说明:
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构
test:增加测试
build:构建过程或辅助工具的变动
例如:bug#123,234, 1234;story#123 task#123;
提交示例:
feat(service): 登录接口功能开发1. 手机号登录接口开发完成2. 第三方登录接口开发完成task#123
三、流程规范
3.1 创建分支流程
开发组长需以develop为父分支创建功能特性分支,组员Fork主仓库后,切换到特性分支进行开发,每日下班前需提交程序代码,并同步到远程。
功能特性分支未开发完成前不可合并到develop 分支,。
举例1: 【开发A】进行【用户登录】需求的开发。
A 切换到develop分支,拉取最新代码。
A 以develop为基准,创建 feature/login 分支。
A 在feature/login提交变更,每天将本地代码同步到远程。
开发完成后,将 feature-login 合并到 develop。
举例2: 【开发A】进行【用户登录】需求的开发,同时【开发B】进行【热门文章】需求的开发。
A 以develop为基准,创建 feature/login 分支。
B 以develop为基准,创建 feature/topic 分支。
A、B每天将本地代码提交到自己的远程分支。
A 开发完成后,将 feature/login 合并到 develop。
B 开发完成后,拉取最新develop,合并代码后将 feature/topic 合并到 develop。
3.2 提交测试流程
测试申请由开发人员提交,开发人员需在GitLab中发起Merge Request,由测试人员进行合并、打包、部署。Merge Request只允许从 develop 分支合并到 release 分支。
举例1: 【开发人员A】完成【用户登录】功能的开发,需要提测。
A 切换到develop 分支,拉取最新代码。
A 发起 Merge Request,将develop 分支合并到release 分支(develop分支均为已完成的功能,故可以合并)。
测试人员合并分支,并部署到测试环境。
测试人员开始测试。
3.3 提交UAT流程
验收申请由测试人员提交,测试人员需发起Merge Request,由技术经理进行合并。Merge Request只允许从release 分支合并到 master 分支。
举例1: 【测试人员C】完成【用户登录】功能的测试,需要验收。
C 发起 Merge Request,将release分支合并到master分支。
技术经理审核,合并代码。
验收人员进行验收。
3.4 发布上线流程
运维人员负责产品的发布上线工作,程序发布到生产环境,测试通过后通知开发人员打Tag。
3.5 Hotfix 流程
Hotfix用于紧急修复线上错误,出现线上问题时应首先考虑回滚、修改配置等解决方案。
首先,开发人员切换至master分支,checkout 最后一次Tag位置,针对问题进行修复。
而后,将修复后的程序提交UAT环境进行测试,测试通过后进行发布。
最后,将补丁合并至master分支和develop分支,对master分支打Tag记录修复明细。