Skip to content

Latest commit

 

History

History
68 lines (43 loc) · 3.8 KB

release_management.md

File metadata and controls

68 lines (43 loc) · 3.8 KB

Release Management & Git Flow

编写人 版本 时间 备注
张伟 1.0.0 2019-05-10 初版

一、摘要

版本号命名方式:主版本号 . 次版本号 . 修正版本号 [-版本号修饰]

  • 主版本号:当你做了不兼容的 API 修改,存在向下不兼容
  • 次版本号:当你做了向下兼容的功能性新增,向下兼容的新增或修改
  • 修正版本号:当你做了向下兼容的问题修正
  • 版本号修饰:主要标识版本的使用范围,比如使用对象、维护时长

软件开发管理工作流:Git Flow

  • master分支:最新的保证可部署的正式版本
  • develop分支:最新的合并后开发版本
  • feature分支:功能开发
  • release分支:发布版本号与已知问题少量修改
  • hotfix分支:修复已发布的版本问题

二、版本号规范

1.主版本号、次版本号、修正版本号命名只能使用数字,数字只能大于等于0,数值只能递增并且禁止在版本号数字前补0。

2.版本发布以后禁止修改软件内任何内容,如果有修改必需以新版本发布。

3.当主版本号为0时,软件被视为不稳定阶段,一切功能和接口都可能更改。当主版本号升级不为0后,软件视为稳定版本,之后的修改会基于当前的功能。

4.增加了向下兼容的新功能时或功能标记弃用时,需要增加次版本号,只有在的基础上,次版本号增加的时候,修正版本号需要归零。

5.进行了向下兼容的对已有功能的bug修复或者功能修正的时候,需要增加修正版本号。

6.主版本号增加时,需要将次版本号、修正版本号都归零。

7.版本号修饰主要用于:该版本有不同的发布范围和状态,支持维护的时间,可能的变更风险等。

8.版本号修饰一般有以下方式:

  • alpha: 内部测试版本,BUG 较多,一般用于开发人员内部交流
  • beta: 测试版,BUG 较多,一般用于小范围测试,并向开发人员反馈
  • rc: release candidate,即将作为正式版发布,正式版之前的最后一个测试版。
  • r/release/或干脆啥都不加: 最终释放版,用于一般用户
  • lts: 长期维护,指定版本维护时间,会修复所有在这个版本中发现的 BUG

版本号命名示例:0.1.1, 1.0.0 , 1.11.2 , 2.3.0-alpha , 2.3.0-beta

三、Git Flow规范

image

1.master分支和develop分支是随着项目生命周期长期存在的分支,绝对不被删除。

2.master分支维护的是最新的可部署版本,并且不允许直接对该分支进行代码的提交和修改,只允许发布时从其他分支合并进入,合并以后需要发布对应版本号的git标签。

3.develop分支维护的是最新的开发过程中的代码,也不允许直接对该分支进行代码的提交和修改,只能从相关的feature分支中合并进入。

4.feature分支是实际开发的工作空间,每个需要开发的feature会从当前的develop分支中新建出对应的feature,在feature分支中进行开发与提交,开发完毕后通过合并请求合并到develop分支中。

5.release分支只处理版本发布前的准备工作,不允许进行需求变更和功能变更,只允许修改部分提测后暴露的bug。

6.hotfix分支用于进行已经发布的版本的修复工作,如果某个发布版本产生了漏洞需要尽快修复,将会在已经发布的版本基础上创建hotfix分支,并且在该分支下修复问题后,发布更新的版本(修正版本号增加)。

Reference:

  • 语义化版本控制的规范(语义化版本 2.0.0)
  • A succdessful Git branching model
  • Git 的使用