软件版本号解读(语义化SemVer、日历化CalVer及标识符)
1. 版本控制规范
1.1. 语义化版本(SemVer)
版本格式:主版本号.次版本号.修订号
,版本号递增规则:
- 主版本号(MAJOR version):添加了不兼容的 API 修改,
- 次版本号(MINOR version):添加了向下兼容的功能性新增,
- 修订号(PATCH version):添加向下兼容的问题修正。
1.1.1. 补充说明
- 版本号均从
0
开始,一般使用0.1.0
作为初始化开发版本。 - 主版本号为零(0.y.z)的软件处于开发初始阶段,一切都可能随时被改变(即公共 API 不稳定)。
1.0.0
的版本号用于界定公共 API 的形成。这一版本之后所有的版本号更新都基于公共 API 及其修改内容。- 主版本号更新时,次版本号,修订号需要归零;次版本号更新时,修订号需要归零。
- 先行版本号(可选)被标注在修订版之后,先加上一个连接号再加上一连串以句点分隔的标识符来修饰。范例:1.0.0-alpha、1.0.0-0.3.7、1.0.0-x.z。
- 版本编译信息(可选)被标注在修订版或先行版本号之后,先加上一个加号再加上一连串以句点分隔的标识符来修饰。范例:1.0.0-alpha+001、1.0.0+20130313144700、1.0.0-beta+exp.shaf85。
1.1.2. 实际应用
Node.js, npm, Go Module, Kubernetes 等
1.1.3. 参考
- 语义化版本 2.0.0 | Semantic Versioning: https://semver.org/lang/zh-CN/
- GitHub - semver/semver: Semantic Versioning Specification: https://github.com/semver/semver
1.2. 日历化版本(CalVer)
基于项目发布日期的版本控制约定,CalVer 并未像"SemVer"使用单一方案,而是引入了开发人员的 标准术语:
YYYY
- 年份全称 - 2006、2016、2106YY
- 年份缩写 - 6、16、1060Y
- 以零填充的年份 - 06、16、106MM
- 月份缩写 - 1、2 ... 11、120M
- 以零填充的月份 - 01、02 ... 11、12WW
- 星期(自年初开始)- 1、2、33、520W
- 以零填充的星期 - 01、02、33、52DD
- 日 - 1、2 ... 30、310D
- 以零填充的日 - 01、02 ... 30、31
1.2.1. 补充说明
- 传统的递增版本号是从 0 开始,而日期段是从 1 开始的,且年份缩写和以零填充的年份是相对于 2000 年。
- 星期的使用通常与月/日互斥。
1.2.2. 实际应用
1.2.3. 参考
- 日历化版本 / Calendar Versioning — CalVer: https://calver.org/overview_zhcn.html
2. 标识符
2.1. Maven
- SNAPSHOT:快照版本,如 2.4.0-SNAPSHOT(开发环节)
- RELEASE:正式版本(可以放心使用)
2.2. Spring
- SNAPSHOT:快照版本,如2020.0.0-SNAPSHOT
- M数字(milestone):里程碑版本,如2020.0.0-M1、2020.0.0-M2
- RC数字(Release Candidate):最终产品的候选版本,如果未出现问题则可发布成为正式版本。多数开源软件会推出两个 RC 版本,最后的 RC2 则成为正式版本。如2020.0.0-RC1、2020.0.0-RC2
- 无后缀:正式版本,如
2.4.0
2.2.1. 参考
- What is the difference between Spring's GA, RC and M2 releases? - Stack Overflow: https://stackoverflow.com/questions/2107484/what-is-the-difference-between-springs-ga-rc-and-m2-releases
- https://stackoverflow.com/a/2107490
2.3. Windows
- SP(Service Pack): 一套经过测试的、累积的修补程序、安全更新、关键更新以及其他更新。
- KB(Knowledge Base):Microsoft 的在线知识库。每个 KB 文章都有一个唯一的编号,用于跟踪特定的问题或更新。
2.3.1. 参考
- 标准术语说明 - Windows Client | Microsoft Learn: https://learn.microsoft.com/zh-cn/troubleshoot/windows-client/installing-updates-features-roles/standard-terminology-software-updates
2.4. 其他常见标识符
- alpha:内部测试版本
- beta:公开测试版本
- gamma:相对成熟的测试版,接近即将发行的正式版
- stable:稳定版(正式版本)
- RTM:生产商发放(Release to Manufacturing)软件产品准备交付,提供给工厂压片的版本,来自于以前还需要使用实体载具(光盘,硬盘等)来进行安装的时代。
- GA:一般可用(General availability)所有必要的商业活动(安全性,合法测试,销售评估等)已经完成,该软件产品已经可以发售的阶段。
- RTW:网络分发(Release to Web,Web发布)利用互联网分发软件
- OEM:计算机厂商随计算机销售的版本,不能零售。
- RTL:零售版(Retail),正式上架的零售版。
- Demo:演示版,试用版,包含正式版的部分功能。
- Enhance:增强版,会加入一些实用的新功能。
Heyinsun, CC BY 3.0 https://creativecommons.org/licenses/by/3.0, via Wikimedia Commons
3. 参考汇总
- spring 版本号命名 https://mp.weixin.qq.com/s/ZoUG9h1TndW2QpnPyGeIQA
- 语义化版本 2.0.0 | Semantic Versioning: https://semver.org/lang/zh-CN/
- GitHub - semver/semver: Semantic Versioning Specification: https://github.com/semver/semver
- 日历化版本 / Calendar Versioning — CalVer: https://calver.org/overview_zhcn.html
- What is the difference between Spring's GA, RC and M2 releases? - Stack Overflow: https://stackoverflow.com/questions/2107484/what-is-the-difference-between-springs-ga-rc-and-m2-releases
- 标准术语说明 - Windows Client | Microsoft Learn: https://learn.microsoft.com/zh-cn/troubleshoot/windows-client/installing-updates-features-roles/standard-terminology-software-updates
- Version Meta Experimental {VSChemaUnderDef}: https://versionmeta.org/
- 软件版本周期 - 维基百科,自由的百科全书: https://zh.wikipedia.org/zh-cn/軟件版本週期
- 软件各种版本的含义!例如 RC,M,GA 等等 _ 软件测试 rc 包 -CSDN 博客: https://blog.csdn.net/sun54429552/article/details/47690391
- ID: E6-Q7+1.1.0
- 原文:https://blog.cc01cc.cn/2024/02/23/understanding-software-versioning/
- 署名:零一/cc01cc(zeo): https://github.com/cc01cc
- 欢迎大家转载分享,本作品采用署名-非商业性使用-禁止演绎 4.0 国际进行许可,转载请标明源地址,切莫修改或破坏原文结构,谢谢