首页 > 其他分享 >软件版本号解读(语义化SemVer、日历化CalVer及标识符)

软件版本号解读(语义化SemVer、日历化CalVer及标识符)

时间:2024-02-24 17:00:23浏览次数:30  
标签:SemVer https CalVer 版本号 semver 版本 com

软件版本号解读(语义化SemVer、日历化CalVer及标识符)

1. 版本控制规范

1.1. 语义化版本(SemVer)

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

  1. 主版本号(MAJOR version):添加了不兼容的 API 修改,
  2. 次版本号(MINOR version):添加了向下兼容的功能性新增,
  3. 修订号(PATCH version):添加向下兼容的问题修正。

1.1.1. 补充说明

  1. 版本号均从 0 开始,一般使用 0.1.0 作为初始化开发版本。
  2. 主版本号为零(0.y.z)的软件处于开发初始阶段,一切都可能随时被改变(即公共 API 不稳定)。
  3. 1.0.0 的版本号用于界定公共 API 的形成。这一版本之后所有的版本号更新都基于公共 API 及其修改内容。
  4. 主版本号更新时,次版本号,修订号需要归零;次版本号更新时,修订号需要归零。
  5. 先行版本号(可选)被标注在修订版之后,先加上一个连接号再加上一连串以句点分隔的标识符来修饰。范例:1.0.0-alpha、1.0.0-0.3.7、1.0.0-x.z。
  6. 版本编译信息(可选)被标注在修订版或先行版本号之后,先加上一个加号再加上一连串以句点分隔的标识符来修饰。范例: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. 参考

  1. 语义化版本 2.0.0 | Semantic Versioning: https://semver.org/lang/zh-CN/
  2. GitHub - semver/semver: Semantic Versioning Specification: https://github.com/semver/semver

1.2. 日历化版本(CalVer)

基于项目发布日期的版本控制约定,CalVer 并未像"SemVer"使用单一方案,而是引入了开发人员的 标准术语:

  • YYYY - 年份全称 - 2006、2016、2106
  • YY - 年份缩写 - 6、16、106
  • 0Y - 以零填充的年份 - 06、16、106
  • MM - 月份缩写 - 1、2 ... 11、12
  • 0M - 以零填充的月份 - 01、02 ... 11、12
  • WW - 星期(自年初开始)- 1、2、33、52
  • 0W - 以零填充的星期 - 01、02、33、52
  • DD - 日 - 1、2 ... 30、31
  • 0D - 以零填充的日 - 01、02 ... 30、31

1.2.1. 补充说明

  • 传统的递增版本号是从 0 开始,而日期段是从 1 开始的,且年份缩写和以零填充的年份是相对于 2000 年。
  • 星期的使用通常与月/日互斥。

1.2.2. 实际应用

Ubuntu, Twisted, Boltons

1.2.3. 参考

  1. 日历化版本 / 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. 参考

  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
  2. https://stackoverflow.com/a/2107490

2.3. Windows

  • SP(Service Pack): 一套经过测试的、累积的修补程序、安全更新、关键更新以及其他更新。
  • KB(Knowledge Base):Microsoft 的在线知识库。每个 KB 文章都有一个唯一的编号,用于跟踪特定的问题或更新。

2.3.1. 参考

  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:增强版,会加入一些实用的新功能。

Software_dev2
Heyinsun, CC BY 3.0 https://creativecommons.org/licenses/by/3.0, via Wikimedia Commons

3. 参考汇总

  1. spring 版本号命名 https://mp.weixin.qq.com/s/ZoUG9h1TndW2QpnPyGeIQA
  2. 语义化版本 2.0.0 | Semantic Versioning: https://semver.org/lang/zh-CN/
    1. GitHub - semver/semver: Semantic Versioning Specification: https://github.com/semver/semver
  3. 日历化版本 / Calendar Versioning — CalVer: https://calver.org/overview_zhcn.html
  4. 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
    1. https://stackoverflow.com/a/2107490
  5. 标准术语说明 - Windows Client | Microsoft Learn: https://learn.microsoft.com/zh-cn/troubleshoot/windows-client/installing-updates-features-roles/standard-terminology-software-updates
  6. Version Meta Experimental {VSChemaUnderDef}: https://versionmeta.org/
  7. 软件版本周期 - 维基百科,自由的百科全书: https://zh.wikipedia.org/zh-cn/軟件版本週期
  8. 软件各种版本的含义!例如 RC,M,GA 等等 _ 软件测试 rc 包 -CSDN 博客: https://blog.csdn.net/sun54429552/article/details/47690391

标签:SemVer,https,CalVer,版本号,semver,版本,com
From: https://www.cnblogs.com/cc01cc/p/18031260/understanding-software-versioning

相关文章

  • 设置-关于手机-版本号
    设置-关于手机-版本号./vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java找到函数getSummary@OverridepublicCharSequencegetSummary(){//读取的是Build.DISPLAY的值returnm......
  • 隐藏浏览器响应nginx版本号影藏问题
    在ngixnserver内部添加了server_tokensoff;刚开始有效果,后来就没有作用了修改方案:直接放到http这个级别下http{includemime.types;default_typeapplication/octet-stream;#log_formatmain'$remote_addr-$remote_user[$time_local]"$re......
  • 165. 比较版本号(中)
    目录题目题解题目给你两个版本号version1和version2,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个'.'连接。每个修订号由多位数字组成,可能包含前导零。每个版本号至少包含一个字符。修订号从左到右编号,下标从0开始,最左边的修订号下标为0,下一个修订......
  • Android系统版本号对照表
    Android系统版本号对照表 系统名称系统版本号字母Android1434UAndroid1333TAndroid12L32SAndroid1231SAndroid1130RAndroid1029QAndroid928PieAndroid8.127OreoAndroid8.026OreoAndroid7.1......
  • js Konqueror 和 KHTML 的版本号
    WebKit2003年,苹果宣布将发布自己的浏览器Safari。Safari的渲染引擎叫WebKit,是基于Linux平台浏览器Konqueror使用的渲染引擎KHTML开发的。几年后,WebKit又拆分出自己的开源项目,专注于渲染引擎开发。这个新浏览器和渲染引擎的开发者也面临与当初IE3.0时代同样的问题:怎......
  • INFINI Labs 产品更新 | 统一版本号 1.22.0
    INFINILabs产品又更新啦~,包括Console,Gateway,Loadgen,Agent1.22.0。为了避免版本不同带来的困扰,以后发布均统一版本号,此次版本重点修复历史遗留Bug、优化内存占用等。以下是本次更新的详细说明。INFINIConsolev1.22.0INFINIConsole是一款非常轻量级的多集群、跨版本的搜索......
  • INFINI Labs 产品更新 | 统一版本号 1.22.0
    INFINILabs产品又更新啦~,包括Console,Gateway,Loadgen,Agent1.22.0。为了避免版本不同带来的困扰,以后发布均统一版本号,此次版本重点修复历史遗留Bug、优化内存占用等。以下是本次更新的详细说明。INFINIConsolev1.22.0INFINIConsole是一款非常轻量级的多集群、跨版本的搜......
  • 如何获取微信的版本号详解【附完整源码】
    前两天群里有人问到这个问题,我想着在网上找个教程发给他,没想到这玩意还挺新鲜?网上基本上找不到实质性的回答...关于这个问题,其实挺简单的,微信的版本号其实就写在注册表中,读取它就完事了~打开注册列表找到【计算机\HKEY_CURRENT_USER\Software\Tencent\WeChat】,就看的到版本号......
  • 安装vue脚手架以后,vue版本不能查出版本号,找不到指令
    重装电脑后,安装完node,用npm安装vue脚手架,查不到版本信息号原因竟然是我之前重装了node的版本然后修改了一些环境变量,试了很多方法,vue-cil还是不生效 解决方法1.执行如下命令代理置为空npmconfigsetproxynull2.运行如下命令清理缓存npmcacheclean--force3.配置npm源......
  • 解决方案 | AutoCAD 版本+版本号+受支持的 .NET SDK版本+.NET Framework版本
    关于Managed.NET兼容性Managed.NET应用程序通常与扩展基于AutoCAD的产品的行为和功能的公司和第三方应用程序关联。在移植到最新版本后,并非所有.NET应用程序都可以正常工作。.NET应用程序的兼容性在各版本之间可能随时更改,以利用最新的.NETFramework和Auto......