分支策略——Gitflow Workflow(四)

这里按照我们传统的习惯对GitFlow的命名做了修改。

分支分类

Main 分支:

  • Develop 分支
  • Release 分支

Supporting 分支:

  • Feature 分支
  • Release candidate分支
  • Hotfix 分支

分支命名规范

Develop分支

dev

Release分支

master

Feature分支

以下三种分类方式是对Gitflow的扩展(由于gitlab代码评审是以feature branch为基本操作单元的,所以做了这种扩展,Gitflow中只有Develop Feature这一种feature分支)

Develop Feature分支

feature/{version_id}/{jira_id}/{description}

version_id为该feature想要合入的版本

例:

feature/v1.2/JIRA-333/add_gpio_driver
Release Feature分支

f_release/{version_id}/{jira_id}/{description}

version_id为该feature想要合入的版本

例:

f_release/v1.2/JIRA-345/fix_gpio_driver
Hotfix Feature分支

f_hotfix/{version_id}/{jira_id}/{description}

version_id为hotfix分支的版本号

例:

f_hotfix/v1.2.2/JIRA-348/fix_driver

Release Candidate分支

sdk_{version_id}_rc

version_id为候选发布版本号

例:

sdk_v1.2_rc

Hotfix分支

hotfix_{version_id}

version_id为master分支上下一个修复版本号

例:

# master分支上当前的发布版本为sdk_v1.2.3_release

hotfix_v1.2.4

Tag命名规范

Maintainer在开发的合适阶段在Release Candidate和master分支上打tag。

Release Candidate Tag

从dev分支上检出新的Release Candidate分支后,需要提交ChangeLog和VERSION信息,并打tag: sdk_{version_id}

例:

sdk_v1.2

在Release Candidate分支上合并修复patch后需要打tag:sdk_{version_id}-rcx

例:

sdk_v1.2-rc3

Release Tag

当master分支上合并入Release Candidate分支后打tag:sdk_{version_id}

version_id的修复版本号从“1”开始

例:

sdk_v1.2.1_release

当master分支上合并入Hotfix分支后打tag:sdk_{version_id}

例:

sdk_v1.2.2_release

分支关系

  • remote master分支为初始化分支,由Maintainer创建
  • remote dev分支从remote master分支检出,由Maintainer创建
  • develop feature分支从local dev分支检出,并合并入remote dev分支
  • remote release candidate分支从remote dev分支检出,并合并入remote master分支和remote dev分支
  • release feature分支从local release candidate分支检出,并合并入remote release candidate分支
  • remote hotfix分支从remote master分支检出,合并入remote master分支和remote dev分支(如果release candidate分支正在开发,则不合并入dev分支而合并入remote release candidate分支)
  • hotfix feture分支从local hotfix分支检出,并合并入remote hotfix分支

分支、Tag权限

为了防止错误的提交覆盖提交历史,规定所有的remote端创建的分支都开启protected权限,所有提交只能以feature branch的形式,请求merge request。任何直接提交到remote branch上的push请求都会被拒绝。

Maintainer权限职责

  • 创建master分支、dev分支、release candidate分支、hotfix分支
  • 合并feature分支、release candidate分支、hotfix分支
  • 给release candidate分支打tag,给master分支打tag
  • 删除feature分支
  • 更新版本ChangeLog(进入release candidate后和hotfix merge后)和VERSION(进入release candidate后)文件

Developer权限职责

  • 创建local feature分支
  • push feature分支到Gitlab仓库
  • 发起merge request
  • 删除自己push的feature分支

Reviewer权限职责

  • 评审feature代码
  • 测试feature代码
  • 通知Maintainer合并请求

Tester权限职责

  • 测试Release Candidate分支上的项目
  • 反馈Bug给Developer

分支禁止操作

  • 禁止删除master分支、dev分支、release candidate分支
  • 禁止直接push提交到Gitlab,所有合并请求都应以feature branch的形式push
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值