【DevOps 工具链】软件版本号命名规范 - 3种规则(读这一篇就够了)

文章目录

  • 1、简述
  • 2、常见软件的版本号命名规则
  • 3、版本号命名规范整理
    • 3.1、XYZ/MMP
      • 3.1.1、规则
      • 3.1.2、确定
      • 3.1.3、举例
      • 3.1.4、详细规则
    • 3.2、XYZD/MMPD
    • 3.3、VRC
      • 3.3.1、规则
      • 3.3.2、对"Vxxx"的说明
      • 3.3.3、对"Rxxx"的说明
      • 3.3.4、对"LLL"的说明
      • 3.3.5、对"Cxx"的说明
      • 3.3.6、对"Bxxy"的说明
      • 3.3.7、对"SPxx"的说明
      • 3.3.8、举例
  • 4、版本发布周期

1、简述

有各种各样的软件版本号命名规则,盘点下常见的规则,从而制定新项目的软件版本号命名规范。

2、常见软件的版本号命名规则

Android:

Android 2.3.1, Android2.3.3, Android2.3.5……,按照主、次、维护的方式构建版本

Windows:

windows 98,windows 2000,windows xp,windows 7…,最大的特点是杂乱无章,毫无规律。

Linux Kernel:

0.0.1,1.0.0,2.6.32,3.0.18…,若用 X.Y.Z 表示,则偶数 Y 表示稳定版本,奇数 Y 表示开发版本。

华为:

V800R007C00SPC100、V100R001C01B031…,按照VRC的版本命名规则模式

3、版本号命名规范整理

3.1、XYZ/MMP

3.1.1、规则

最常见的就是XYZ规则(又称 Major.Minor.Patch),<主版本号>.<次版本号>.<修订版本号>,如 1.0.0。

  • 主版本号

功能模块有大的变动,比如增加多个模块或者整体架构发生变化。
当 API 的兼容性变化时,X 需递增。

  • 次版本号

和主版本相对而言,次版本号的升级对应的只是局部的变动。但该局部的变动造成了程序和以前版本不能兼容,或者对该程序以前的协作关系产生了破坏,或者是功能上有大的改进或增强。
当增加功能时(不影响 API 的兼容性),Y 需递增。

  • 修订版本号

局部的变动,主要是局部函数的功能改进,或者bug的修正,或者功能的扩充。
当做 Bug 修复时(不影响 API 的兼容性),Z 需递增。

3.1.2、确定

原则上,自第一个稳定版本发布后,修订版本号会经常性改动,而次版本号则依情况作改动,主版本号改动的频率很低,除非有大的重构或功能改进。对于小项目而言,甚至可以简化为:>.<次版本号>.<修订版本号>。

版本号比较自由,至于Beta版或者是正式版跟版本号之间并没有任何关系,只要达到正式版的要求的话,即使版本号是1.0或者0.1都可能是正式版的。

  • Alpha版(内部版本):
    此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改;
  • Beta版(测试版):
    该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI;
  • RC版(软件正式发布的候选版本):
    该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几;
  • Release版(发行版):
    该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标准版。一般情况下,Release不会以单词形式出现在软件封面上,取而代之的是符号®;

其他:

  • demo:演示版
  • enhance:增强版
  • free:自由版
  • full version:完整版,即正式版
  • lts:长期维护版本
  • standard:标准版
  • ultimate:旗舰版
  • upgrade:升级版
    在这里插入图片描述

3.1.3、举例

软件版本号由四部分组成,第一个1为主版本号,第二个1为子版本号,第三个1为阶段版本号,第四部分为日期版本号加希腊字母版本号,希腊字母版本号共有5种,分别为:base、alpha、beta、RC、release。例如:1.1.1.051021_beta。

  • u 主版本号(1):当功能模块有较大的变动,比如增加多个模块或者整体架构发生变化。此版本号由项目决定是否修改;
  • u 子版本号(1):当功能有一定的增加或变化,比如增加了对权限控制、增加自定义视图等功能。此版本号由项目决定是否修改;
  • u 阶段版本号(1):一般是 Bug 修复或是一些小的变动,要经常发布修订版,时间间隔不限,修复一个严重的bug即可发布一个修订版。此版本号由项目经理决定是否修改;
  • u 日期版本号(051021):用于记录修改项目的当前日期,每天对项目的修改都需要更改日期版本号。此版本号由开发人员决定是否修改;
  • u 希腊字母版本号(beta):此版本号用于标注当前版本的软件处于哪个开发阶段,当软件进入到另一个阶段时需要修改此版本号。此版本号由项目决定是否修改。

3.1.4、详细规则

1、X, Y, Z 必须为非负整数,且不得包含前导零,必须按数值递增,如 1.9.0 -> 1.10.0 -> 1.11.0
2、0.Y.Z 的版本号表明软件处于初始开发阶段,意味着 API 可能不稳定;1.0.0 表明版本已有稳定的 API。
3、当 API 的兼容性变化时,X 必须递增,Y 和 Z 同时设置为 0;当新增功能(不影响 API 的兼容性)或者 API 被标记为
Deprecated 时,Y 必须递增,同时 Z 设置为 0;当进行 bug fix 时,Z 必须递增。
4、先行版本号(Pre-release)意味该版本不稳定,可能存在兼容性问题,其格式为:X.Y.Z.[a-c][正整数],如 1.0.0.a1,1.0.0.b99,1.0.0.c1000。
5、开发版本号常用于 CI-CD,格式为 X.Y.Z.dev[正整数],如 1.0.1.dev4。
6、版本号的排序规则为依次比较主版本号、次版本号和修订号的数值,如 1.0.0 < 1.0.1 < 1.1.1 < 2.0.0;对于先行版本号和开发版本号,有:1.0.0.a100 < 1.0.0,2.1.0.dev3 < 2.1.0;当存在字母时,以 ASCII 的排序来比较,如 1.0.0.a1 < 1.0.0.b1。

注意:版本一经发布,不得修改其内容,任何修改必须在新版本发布!

3.2、XYZD/MMPD

在XYZ/MMP规则上增加了日期。
用于记录修改项目的当前日期,每天对项目的修改都需要更改日期版本号。此版本号由开发人员决定是否修改
在这里插入图片描述

3.3、VRC

3.3.1、规则

在集成产品开发中,推荐VRC的版本命名规则模式,此模式为华为的版本号规则
即:

商标+[子商标]+型号+中(英)文名称+VxxxRxxx[LLL]CxxBxxy[SPxx]

1)[ ]表示可选。

2)“V”、“R”、“C”、“B”、"SP"为分隔符;V后面三位数字;R后面三位数字;LLL可选;C后面两位数字;B后面三位数字;SP后面两位数字,只在热补丁时使用。

3)商标、子商标、型号、中(英)文名称根据产品命名相关规范、指导及规则制定。

3.3.2、对"Vxxx"的说明

“Vxxx”(version)代表某一产品或其系列产品,根据市场定位或开发平台的不同,一个产品分为若干个V 级版本。每个V级版本根据市场竞争需要、技术、功能特性与成本因素等,有一个总体开发规划,按计划开发若干个R(Release)级版本。V 版本可以包含若干个Release版本。

如果满足下列任何一种情况,则必须产生新的Version 版本,即产品的大版本:

  • 产品市场定位发生变化,引起产品特性的重大变化;
  • 产品平台发生变化,与原有平台不能兼容。

V版本以三位数字表示,数字间不准许有任何其它字母、符号出现,从100开始,不同平台或技术的同类产品尽量采用大数标示,即V后面第一位,如V100、V800。

3.3.3、对"Rxxx"的说明

“Rxxx”(Release) 版本表示产品特性版本,可以包含若干个特性,形成一个具体的系列产品,一个Release 版本纳入什么特性,需要综合考虑市场竞争、技术与成本方面的因素,系列产品也可有自己的特性版本,系列产品可以在特性版本号上用特别的字母或数字表示。产品路标规划确定了该产品所有的大版本(Version),以及每个大版本(Version)包含的特性版本(Release)、系列产品的发布时间和所包含的特性。特性版本需要按照产品开发流程所规定的各个评审决策点进行评审。

如果满足下列情况,则必须产生新的Release 版本:

  • 产品市场定位和产品平台没有发生变化,但是,衍生新的系列产品;
  • 综合考虑市场竞争、技术与成本方面的因素,产品特性发生变化,有计划地向市场发布的版本。

R版本以三位数字表示,数字间不准许有任何其它字母、符号出现,从001开始,在同一个V下面以1为单位连续递增,例如:R001、R002。

3.3.4、对"LLL"的说明

"LLL"为海外版本标识符,以三个字母表示,可选。对于国内版本,此项可以省略。具体的对应关系请见附表1( 海外版本标识符和相应的语言(国家)对照表);如果某个版本可以用于某一个地区,可以在附录中选择本地区的主要国家的标识符作为版本的海外标识。

3.3.5、对"Cxx"的说明

“Cxx”(Customer)表示计划提供给客户的版本,以两位数字表示,数字间不准许有任何其它字母,从01开始,以1为单位连续递增。实现该C版本特性集内特性的各个B版本前应标识出Cxx。Cxx与某些Bxx对应,同一Bxx为Cxx版本时,Cxx不以Bxxy的y位及 SPxx而变化,即同一个Cxx可能对应一个Bxxy或同一Build的多个改错版本或热补丁版本。

3.3.6、对"Bxxy"的说明

“Bxxy”(Build)表示开发与IBT过程中的Build版本。B后面的三位中的前两位xx表示规划的Build划,最后一位y表示每一个Build的过程改错版本,包含了网上问题修改版本和转测试回归版本。其中,

  • xx从01开始,以1为单位连续递增;RXX变化时,Bxxy版本复位到B010。
  • y从0开始,以1为单位连续递增。Bxx变化时,y复位到0开始。

3.3.7、对"SPxx"的说明

SP是为了解决问题,对网上运行版本的热补丁版本,以两位数字表示,数字之间不允许有任何其它符号,如空格、“.”、"-"等。从01开始,以1为单位连续递增。如果版本不是补丁,SPxx要省略。 例如:SP01、SP02。 SP为某一发布版本的补丁版本,只有对于已经发布的版本需要做补丁版本时才会有此项。做SP时,前面的所有版本序号不变。

3.3.8、举例

1. V100R001B010    表示V100R001的第1个Build的首个转测试版本,不发给客户。
2. V100R001B011    表示V100R001的第1个Build的第1个转测试改错版本。
3. V100R001C01B023    表示V100R001的第2个Build为第1个客户版本,一般用于试验局或ESS局。实际交付件为第2个Build的第3个改错版本。
4. V100R001C01B023SP01    表示对V100R001C01B023的第一个热补丁版本。
5. V100R001B030    表示V100R001的第3个Build的首个转测试版本,不发给客户。
6. V100R001C02B053    表示V100R001的第5个Build为第2个客户版本,可用于试验局、ESS局、或ESP局。实际交付件为第5个Build的第3个改错版本。

4、版本发布周期

  • 非紧急情况:按照一般发包管理制度执行
  • 紧急情况:如果Bug比较紧急可跳过一般流程,由开发人员尽快修复Bug,测试及产品确认之后直接发布该版本。

建议尊重规则,不留钻空子的口,减少紧急情况的发生。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/270349.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Databend 开源周报第 125 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 密码策略 Data…

8.21 PowerBI系列之DAX函数专题-帕累托分析

需求 实现 1 按商品小类累积 var rollup_sales calculate(//计算当前累计销售额 [销售额], filter(allselected(order_2[产品小类]),sum(order_2[订单金额])<[销售额]) ) //按小类累积金额,filter内的销售额为选中的各小类的销售额 //金额从大到小累积&#xff0c;用&l…

RabbitMQ如何做到不丢不重

目录 MQTT协议 如何保证消息100%不丢失 生产端可靠性投递 ​编辑 RabbitMQ的Broker端投 &#xff08;1&#xff09;消息持久化 &#xff08;2&#xff09;设置集群镜像模式 &#xff08;3&#xff09;消息补偿机制 消费端 ACK机制改为手动 总结 MQTT协议 先来说下MQTT…

阿里云经济型e实例2核2G3M99元1年,性价比超高的入门级云服务器

产品简介 经济型e实例是阿里云面向个人开发者、学生、小微企业&#xff0c;在中小型网站建设、开发测试、轻量级应用等场景推出的全新入门级云服务器&#xff0c;采用Intel Xeon Platinum架构处理器&#xff0c;支持1:1、1:2、1:4多种处理器内存配比&#xff0c;采用非绑定CPU…

IntelliJ IDEA快捷键及调试

文章目录 一、IntelliJ IDEA 常用快捷键一览表1-IDEA的日常快捷键第1组&#xff1a;通用型第2组&#xff1a;提高编写速度&#xff08;上&#xff09;第3组&#xff1a;提高编写速度&#xff08;下&#xff09;第4组&#xff1a;类结构、查找和查看源码第5组&#xff1a;查找、…

ES8生产实践——Kibana对接Azure AD实现单点登录

基本概念介绍 什么是单点登录 单点登录&#xff08;Single Sign-On&#xff0c;SSO&#xff09;是一种身份验证和访问控制机制&#xff0c;允许用户使用一组凭据&#xff08;通常是用户名和密码&#xff09;仅需登录一次&#xff0c;即可访问多个应用程序或系统&#xff0c;而…

DDIM详解

DDIM详解 参考&#xff1a;https://www.bilibili.com/video/BV1VP411u71p/ 虽然 DDIM 现在主要用于加速采样&#xff0c;但他的实际意义远不止于此。本文将首先回顾 DDPM 的训练和采样过程&#xff0c;再讨论 DDPM 与 DDIM 的关系&#xff0c;然后推导 DDIM 的采样公式&#xf…

MySQL的事务-隔离级别

上篇&#xff0c;整理了MySQL事务的原子性&#xff0c;这篇继续整理MySQL事务的一致性、隔离性和持久性。 2. 一致性指的是事务开始前和结束后&#xff0c;数据库的完整性约束没有被破坏&#xff0c;这保证了数据的完整性和一致性。一致性必须确保数据库从一个一致的状态转换到…

【无标题】【一周安全资讯1223】一图读懂《工业和信息化部办公厅关于组织开展网络安全保险服务试点工作的通知》;15亿条纽约房产记录泄露

要闻速览 1、一图读懂《工业和信息化部办公厅关于组织开展网络安全保险服务试点工作的通知》 2、国家数据局《“数据要素”三年行动计划 (2024—2026年)》公开征求意见 3、中国信息通信研究院发布《公共数据授权运营发展洞察 (2023年)》 4、15亿条纽约房产记录泄露&#xff0c…

c# OpenCvSharp透视矫正六步实现透视矫正(八)

透视矫正,引用文档拍照扫描&#xff0c;相片矫正这块。 读取图像Cv2.ImRead();预处理&#xff08;灰度化&#xff0c;高斯滤波、边缘检测&#xff09;轮廓检测&#xff08;获取到最大轮廓&#xff09;获取最大面积轮廓的四个顶点标识最小矩形坐标透视矫正显示 完整代码 // 1、…

结构体的对齐规则

1.引入 我们在掌握了结构体的基本使⽤后。 现在我们深⼊讨论⼀个问题&#xff1a;计算结构体的大小。 这也是⼀个特别热门的考点&#xff1a; 结构体内存对齐。 2.具体分析 ⾸先我们得掌握结构体的对⻬规则&#xff1a; 1. 结构体的第⼀个成员对⻬到和结构体变量起始位置偏移量…

直通车定义、功能以及扣费原则

1.直通车是天猫付费搜索广告&#xff0c;即时需求&#xff0c;是消费者主动来搜索的&#xff0c;cpc扣费原则&#xff0c;一般用来拉新或者收割客户&#xff1b; 2.一般关键词优先&#xff0c;人群溢价是用来更精准投放的&#xff0c;可以不投溢价人群&#xff1b; 3.溢价人群…

移动开发新的风口?Harmony4.0鸿蒙应用开发基础+实践案例

前段时间鸿蒙4.0引发了很多讨论&#xff0c;不少业内人士认为&#xff0c;鸿蒙将与iOS、安卓鼎足而三了。 事实上&#xff0c;从如今手机操作系统竞赛中不难看出&#xff0c;安卓与iOS的形态、功能逐渐趋同化&#xff0c;两大系统互相取长补短&#xff0c;综合性能等差距越来越…

详细学习Java注解Annotation、元注解(通俗易懂,一学就会)

概述 底层原理 自定义注解 示例代码&#xff1a; 1. 2.只有属性名为value的才可以&#xff0c;java对它进行了标识&#xff0c;如果是其他别名如value1是不行的 3.多个属性&#xff0c;必须用键值对形式&#xff0c;不能少写&#xff0c;也不能多写&#xff0c;除非有default修…

Apache Commons BeanUtils: JavaBean操作的艺术

第1部分&#xff1a;Apache Commons BeanUtils 简介 咱们今天聊聊Apache Commons BeanUtils。这货简直就是处理JavaBean的利器&#xff0c;用起来又方便又快捷。不管是属性拷贝、类型转换&#xff0c;还是动态访问&#xff0c;BeanUtils都能轻松应对。 BeanUtils是啥&#xf…

H266/VVC帧内预测编码技术概述

预测编码技术 预测编码&#xff08;Prediction Coding&#xff09;是指利用已编码的一个或多个样本值&#xff0c;根据某种模型或方法&#xff0c;对当前的样本值进行预测&#xff0c;并对样本真实值和预测值之间的差值进行编码。 视频中的每个像素看成一个信源符号&#xff…

Java并发(二十一)----wait notify介绍

1、小故事 - 为什么需要 wait 由于条件不满足&#xff08;没烟干不了活啊&#xff0c;等小M把烟送过来&#xff09;&#xff0c;小南不能继续进行计算 但小南如果一直占用着锁&#xff0c;其它人就得一直阻塞&#xff0c;效率太低 于是老王单开了一间休息室&#xff08;调…

时间Date

你有没有思考过时间问题&#xff1a; 前端为什么可以直接看见时间格式的数据 后端怎么接受的数据&#xff0c;怎么处理的 一般来说&#xff1a;前端传输来数据都是时间格式的字符串&#xff0c;那么后端需要能够解析时间格式的字符串&#xff0c;归功于JSONFormat ,可以解析…

node封装一个图片拼接插件

说在前面 平时我们拼接图片的时候一般都要通过ps或者其他图片处理工具来进行处理合成&#xff0c;这次有个需求就需要进行图片拼接&#xff0c;而且我希望是可以直接使用代码进行拼接&#xff0c;于是就有了这么一个工具包。 插件效果 通过该插件&#xff0c;我们可以将图片进…

SUS-Chat-34B领先一步:高效双语AI模型的突破

引言 在人工智能领域&#xff0c;模型的规模和效能一直是衡量其先进性的关键指标。南方科技大学联合IDEA研究院CCNL团队最新开源的SUS-Chat-34B模型&#xff0c;以其340亿参数的庞大规模和卓越的双语处理能力&#xff0c;在AI界引起了广泛关注。 模型概述 SUS-Chat-34B是基于…