语义化版本控制规范

个人博客: https://zerogozhang.github.io/
GitHub地址:https://github.com/zeroGozhang/zeroGoZhang.github.io

一、语义化版本控制规范2.0:

1、 语义化版本控制规范

版本格式: 主版本号.次版本号.修订号,版本递增规则如下:

主版本号:做了不兼容的API更改
次版本号:做了向下兼容的功能性新增
修订号:做了向下兼容的问题修正
注: 先行版本号及版本编译元数据可以加到“主版本号.次版本号.修订号“后面,作为延伸。

2、版本控制注意事项:

处于开发初始阶段的主版本号为(0.y.z),该版本为不稳定版
1.0.0 版本用于界定公共API的形成。
次版本号在有向下兼容的新功能出现时递增。 旧功能被弃用也需新增。
主版本号在有任何不兼容的修改被加入公共API时递增。
修订号在只做了向下兼容的修正时才递增。这里的修正指的是针对不正确结果而进行的内部修改

二、Git做VCS(版本控制系统)场景的应用:

1、 前言

前面了解了语义化的版本控制定义,这是在软件管理大规模项目沉淀下来的版本控制规范,有效应对大型项目,大量依赖引发的“依赖地狱” 问题。理解语义化版本控制并不难,但如何才能更好的结合在实际开发项目中呢?

2、 基于Git工作流场景的语义化版本控制

2.1 概述:

不像其他的SVN的集中式管理,git的分布式架构给程序员的分工协作带来了极大的舒适感,但也恰是Git的分布式架构,当项目出现了问题,需要回查节点的时候,将会带来一定不便之处。经典分支协作模式大概简单描述:建立分支,进行开发,提交到本地master,删除分支。这样做的后果是以前的修改细节会丢失。众多的commit也会让人眼花缭乱,也给问题定位,历史版本回溯带来麻烦。为解决这种麻烦,以下以Git做VCS的典型协作方式为场景,应用上语义化版本控制规范2.0:

2.2 Git Flow 经典协作模式

核心仓库:master和develop两个分支
分支分类:
核心分支:master和develop分支
支持性分支:特性分支(Feature),发布分支(Release),热补丁分支(Hotfix)
这是在网上找到的Git经典工作流图:

在这里插入图片描述单看这图比较杂乱,Git协作方式不在此处讨论,想了解可网上搜索相关资料。推荐文章 图文详解如何利用Git进行团队协作开发。下面我们从一个实例进行一个版本控制

3、 从零开始一个Git Flow工作流

3.1 开发阶段

创建两条主要分支master分支和develop分支,master分支是正式发布的分支,develop为功能的集成分支,master分支每提交一次分配一次版本号。
先创建master分支,此时项目的版本号为 V0.1.0, 处于开发初始阶段的主版本号为(0.y.z)。
master分一个分支到develop分支上。develop可现在本地创建,然后git push到服务器上。

git branch develop
git push -u origin develop

git clone [email protected]:portal/jkq-djh-api.git
git checkout -b develop origin/develop

develop 分支是功能集成分支,每个开发者的功能都会先合并到develop分支上。

3.2 多个开发者各自创建feature分支,新分支的创建需基于develop分支,而非master分支,开发者在各自分支完成开发功能。每个feature分支的合并都应该在develop上,而不应该直接合并到master上。

git checkout -b feature1 develop

3.3 项目完成并准备发布阶段

K8上的版本读取的是package.json文件中的versionf3e0a9f872d511e9823d0a58ac130419 ,version第一版本发布阶段改为V1.0.0,此时提交到master分支时,K8S会自动构建镜像。每次修改到主版本号和此版本号都建议加入Tag标签,方便出现问题时,回查节点。

新建含附注的标签

 git tag -a 标签名 -m '附注信息'
eg.
git tag -a v 1.0.0 -m '稳定版本V1.0.0 更新内容:功能1,功能2,功能3'

push标签到远程仓库,git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库。其命令格式如同推送分支,运行 git push origin [tagname] 即可

git push origin v1.0.0

使用 git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象

git show v1.0.0

我们可以引入Git 打标签,结合语义化版本控制的规范,可以直观了解每个版本的API修改内容,向下兼容情况。省去开发人员查看大量commit命令。

  规范化的Git 工作流和科学的版本控制,对项目的管理颇有益处,也方便开发人员Debug,版本回滚,历史节点回查。
发布了4 篇原创文章 · 获赞 3 · 访问量 5775
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章