分支策略——Gitflow Workflow(四)

  • Post author:
  • Post category:其他


这里按照我们传统的习惯对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



版权声明:本文为u010020404原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。