带你了解软件版本号的命名规则

1、 常见软件的版本号命名

软件升级过程说明
Linux Kernel0.0.1 / 1.0.0 / 2.6.32 / 3.0.18 /…若用 X.Y.Z 表示,则偶数 Y 表示稳定版本,奇数 Y 表示开发版本。
WindowsWindows 98 / Windows 2000 / Windows XP /Windows 7 / …最大的特点是杂乱无章,毫无规律。
SSH Client0.9.8
OpenStack2014.1.3 / 2015.1.1.dev8

从上可以看出,不同的软件版本号风格各异,随着系统的规模越大,依赖的软件越多,如果这些软件没有遵循一套规范的命名风格,容易造成 Dependency Hell。所以当我们发布版本时,版本号的命名需要遵循某种规则,其中 Semantic Versioning 2.0.0 定义了一套简单的规则及条件来约束版本号的配置和增长。本文根据 Semantic Versionning 2.0.0 和 Semantic Versioning 3.0.0 选择性的整理出版本号命名规则指南。

2、 语义化版本命名通行规则

该规则对版本的迭代顺序命名做了很好的规范,其版本号的格式为 X.Y.Z(又称 Major.Minor.Patch),递增的规则为:

序号格式要求说明
X非负整数表示主版本号(Major),当 API 的兼容性变化时,X 需递增。
Y非负整数表示次版本号(Minor),当增加功能时(不影响 API 的兼容性),Y 需递增。
Z非负整数表示修订号(Patch),当做 Bug 修复时(不影响 API 的兼容性),Z 需递增

详细的使用规则如下:
X, Y, Z 必须为非负整数,且不得包含前导零,必须按数值递增,如 1.9.0 -> 1.10.0 -> 1.11.0。

0.Y.Z 的版本号表明软件处于初始开发阶段,意味着 API 可能不稳定;1.0.0 表明版本已有稳定的API。

当 API 的兼容性变化时,X 必须递增,Y 和 Z 同时设置为 0;当新增功能(不影响 API 的兼容性)或者 API 被标记为 Deprecated 时,Y 必须递增,同时 Z 设置为 0;当进行 bug fix 时,Z 必须递增。

先行版本号(Pre-release)意味该版本不稳定,可能存在兼容性问题,其格式为:X.Y.Z.[a-c][正整数],如 1.0.0.a1,1.0.0.b99,1.0.0.c1000。

开发版本号常用于 CI-CD,格式为 X.Y.Z.dev[正整数],如 1.0.1.dev4。

版本号的排序规则为依次比较主版本号、次版本号和修订号的数值,如 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、商业软件中常见的修饰词

描述方式说明含义
Snapshot快照版尚不不稳定、尚处于开发中的版本
Alpha内部版严重缺陷基本完成修正并通过复测,但需要完整的功能测试
Beta测试版相对 Alpha 有很大的改进,消除了严重的错误,但还是存在一些缺陷
RC终测版Release Candidate(最终测试),即将作为正式版发布。
Demo演示版只集成了正式版部分功能升级,无法升级
SPSP1是 service pack 的意思表示升级包,相信大家在 windows 中都见过。
Release稳定版功能相对稳定,可以对外发行,但有时间限制
Trial试用版试用版,仅对部分用户发行
Full Version完整版即正式版,已发布。
Unregistered未注册有功能或时间限制的版本
Standard标准版能满足正常使用的功能的版本
Lite精简版只含有正式版的核心功能
Enhance增强版正式版,功能优化的版本
Ultimate旗舰版在标配版本升级体验感更好的版本
Professiona专业版针对更高要求功能,专业性更强的使用群体发行的版本
Free自由版自由免费使用的版本
Upgrade升级版有功能增强或修复已知 bug
Retail零售版单独发售
Cardware共享版公用许可证(IOS 签证)
LTS维护版该版本需要长期维护

4、 软件版本号使用限定

为了方便理解,版本限定的语法简述为为 [范围描述]<版本号描述>

范围描述可选,必须配和版本描述确定范围,无法独立存在
< 小于某一版本号
<= 小于等于某一版本号
> 大于某一版本号
>= 大于等于某一版本号
= 等于某一版本号,没有意义和直接写该版本号一样
~ 基于版本号描述的最新补丁版本
^ 基于版本号描述的最新兼容版本
- 某个范围,他应该出现在两个版本描述中间,实际上语法应为 <版本描述>-<版本描述>,写在此处为了统一

严格来讲对 ~,^ 的表述需要结合具体的包管理工具和版本号规则来确定.但是对于一般使用记住如下原则:
^ 是确保版本兼容性时,默认对次版本号的限定约束
~ 是确保版本兼容性时,默认对补丁号的约束

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值