美文网首页
分支开发规范

分支开发规范

作者: 程序员大耳 | 来源:发表于2020-05-14 15:52 被阅读0次

一、分支及角色

1、Gitlab角色

Owner(拥有者)

项目所有者,一般负责分配权限。

Master(管理员)

由开发主管兼任,或者指定人员担任,负责合并release分支到master,merge申请可由开发人员发起,一般在上线第二天确认无问题后发起 merge申请。

Developer(开发者)

开发人员,负责feature、hotfix、release分支的创建,负责release分支的合并。

二、Git分支类型

master 分支(主分支)

主线稳定代码,所有分支都必须从master拉取。master设置为Protected,不允许Developer推送代码,只允许通过Master合并,并且只接受release分支合并请求。

feature分支(特性分支)

开发分支,由Developer从master创建,代码开发基本在该分支完成。

命名规则:feature-当前时间(年月日)-姓名简写_版本说明_版本号(可不用)

如:feature-20190920-whw_demo

feature-20190920-whw_demo_v1.0

hotfix 分支(热修复分支)

BUG修复分支,由Developer从master自由创建,线上问题一般通过该分支修复。

命名规则:hotfix-当前时间(年月日)-姓名简写_版本说明_版本号(可不用)

如:hotfix-20190920-whw_demo

hotfix-20190920-whw_demo_v1.0

release 分支(发布分支)

上线分支,测试环境验证通过后,由Developer从master创建分支,每次线上发版都必须创建对应的release分支,由Developer合并待上线的feature或者hotfix至release。允许合并多个feature或者hotfix分支。

命名规则:release-当前时间(年月日)_版本说明_版本号(可不用)

如:release-20190920_demo

release-20190920_demo_v1.1 

三、分支规范

1、闭环

所有分支基于master新建 。保证分支来源纯正

所有上线分支都是通过release分支merge。 

master只接受release分支合并请求。

Master是主线稳定代码,禁止随意merge代码,只接收release分支merge请求。这一点通过gitlab角色权限控制。

将master分支设置为:protected,只允许Master发起merge和push。

2、开发流程

补充更详细的流程

1、由Developer创建feature分支,一个迭代版本创建一个feature分支。

dev、test环境允许直接部署feature分支。

注:

1)如果在dev、test环境需要在同一时期部署多个feature分支,允许合并到dev或者test分支进行部署。

2)只允许业务分支合并到dev或test分支,不允许从dev或test分支合并到业务分支(避免代码污染)。

2、当测试环境验证通过后,由Developer从master拉取release分支。

Pre、Prod环境都是基于release分支部署。

3、由Developer合并feature分支到release。

release分支对应上线版本,如果某次上线存在多个feature分支,可以将多个feature分支合并到release分支一并上线。

注:

1)release分支接受feature、hotfix的代码合并,不允许直接合并test分支代码(避免代码污染)。

2)如果在pre、prod环境发现bug,需先修改feature或hotfix,验证通过后再合并到release分支。

4、Developer发起release分支合并请求,由Master合并到master分支。

项目上线验收完后,由Developer发起merge请求将release分支合并到master,同时通知Master(管理员)合并代码。

每次上线都会生成一个release分支,release是对应到每个上线版本,需要保存历史记录。为了方便选择分支,我们会定时清理过时分支。(如果分支太多,分支选择列表太长,不便于操作),但是我们又想保存更多的release记录,可以通过创建Tag实现。

注:

1)上线完成之后(2小时后),可以基于release分支打一个当前版本的tag,重大版本必须创建Tag。如:

3、BUG修复流程

1、由Developer创建hotfix分支,并且基于hotfix分支修复BUG。

2、当测试环境验证通过后,由Developer从master拉取release分支。

3、由Developer合并hotfix分支到release。

4、上线验收完成后由Developer发起release分支合并请求,由Master(管理员)合并到master分支。

注:该流程跟开发流程类似。

4、版本回退

如果某次上线版本存在重大BUG,需要回退代码版本,我们找到合适的release分支部署即可。

5、历史分支管理

随着项目持续演进,分支会越来越多,为了方便操作,我们需要对分支进行清理,一般保留最近5个分支。

Feature

建议保留近5个分支。

或者也可以在上线完之后删除,由release分支记录版本记录。

Hotfix

建议保留近5个分支。

或者也可以在上线完之后删除,由release分支记录版本记录。

Release:

保留近3个分支,其他历史记录可以通过Tag保存。

Tag:

Tag是永久保留的,为了保存上线历史,release分支上线完之后可以打一个tag,说明本次上线功能、版本等信息。

四、日志规范

每次commit都必须填写备注,建议格式:

feat:新功能                              

例如: feat:新增用户管理功能

fix:修复内容                              

例如: fix:修复用户导出的bug 

refactor:重构内容                     

例如: refactor:重构UserServiceImpl 

五、Jar版本管理

1、版本类型

1)SNAPSHOT

快照版本,用于开发测试阶段。

命名规则:大版本号.迭代版本号.备用版本号-SNAPSHOT

大版本号:第一位,从1开始

迭代版本号:第二位,从0开始

备用版本号:第三位,从0开始,非必须

如:

1.0-SNAPSHOT

1.0.0-SNAPSHOT

通常情况下采用2位编号即可,如果某个时期存在多个开发版本,可采用3位编号。

2)RELEASE

release版本,正式版本,一经发布不允许修改。

命名规则:大版本号.迭代版本号.备用版本号

大版本号:第一位,从1开始

迭代版本号:第二位,从0开始

备用版本号:第三位,从0开始,非必须

如:

1.0

1.0.1

通常情况下采用2位编号,如果发现某个release版本存在bug需要修复,可生成3位编号。

注:线上项目必须依赖release版本,禁止依赖SNAPSHOT版本。

2.版本升级

2.1、原则

Ø Jar升级必须升级版本号,不允许覆盖发布;

Ø 重大版本升级大版本号(第一位);

Ø 功能迭代升级小版本号(第二位);

2.2、流程

版本变更流程参照开发流程(3.2),在不同的阶段使用不同的版本号。

开发流程见图:

1、featrue开发阶段。

featrue开发阶段使用SNAPSHOT版本,根据当前版本号定义新版本号,通常使用2位版本号。

如:

当前版本号:1.0,新版本号:1.1-SNAPSHOT

当前版本号:1.0.1,新版本号:1.1-SNAPSHOT

如果当前存在多个featrue分支同时开发,可通过备用版本号(第三位)进行区分

如:

当前版本号:1.0,

分别定义版本号:1.1.1-SNAPSHOT、1.1.2-SNAPSHOT,用于不同的项目分支。

2、测试环境验证阶段。

1)如果不需要合并部署,直接使用featrue开发阶段定义的版本即可。

2)如果当前存在多个项目分支,需要合并到test分支部署,代码合并之后需要重新定义版本,可采用2位版本号重新deploy。

如:

假如存在:1.1.1-SNAPSHOT、1.1.2-SNAPSHOT

定义版本:1.1-SNAPSHOT,去除第三位备用版本号,重新deploy。

3、预发布环境验证阶段(release验证)

预发布阶段定义release版本。

1)根据master当前版本定义。

如:

当前版本号:1.0,新版本号:1.1或2.0,小版本升级使用1.1,大版本升级使用2.0;

2)如果已经deploy release版本,发现BUG需要重新deploy。

当前版本号:1.1,新版本号:1.1.1,通过备用版本号升级,多个修复版本以此类推。

3.版本历史

每次版本升级都需要在wiki记录最新版本信息,包括版本号、版本描述,创建时间。

相关文章

  • git分支命名规范

    git 分支命名规范 git 分支命名规范 为规范开发,保持代码提交记录以及 git 分支结构清晰,方便后续维护,...

  • 项目流程规范

    代码管理规范: 从master拉开发分支,上线后合并开发分支进master。 功能迭代分支在features/下,...

  • Git 分支命名规范

    Git 分支命名规范 为规范开发,保持代码提交记录以及 git 分支结构清晰,方便后续维护,现规范 git 的相关...

  • git 规范

    git 分支命名规范: master分支:稳定可用的版本的(可部署的)分支,不能直接在该分支上开发 develop...

  • 分支开发规范

    一、分支及角色 1、Gitlab角色 Owner(拥有者) 项目所有者,一般负责分配权限。 Master(管理员)...

  • git workflow 规范

    [TOC] git workflow 规范 概要说明 分支管理和开发流程 基本分支: master、develop...

  • ☆软件研发代码规范

    1. 分支开发流程 GIT分支开发规范,具体请参考:http://www.jianshu.com/p/cbd8cf...

  • 中型App开发框架总结

    开发流程总图 代码开发阶段  GitLab:代码管理服务。git分支规范 MockServer:前端/后台同步开发...

  • 前端项目git操作命名规范和协作开发流程

    前言 一个项目的分支,一般包括主干 master 和 开发分支 dev,以及若干临时分支 分支命名规范 关联和操作...

  • Git的分支命名

    主要规范两点: git 分支命名规范 git提交记录规范 一. git 分支命名规范 git分支分为集成分支、功能...

网友评论

      本文标题:分支开发规范

      本文链接:https://www.haomeiwen.com/subject/umitohtx.html