1. 版本控制規(guī)范
1.1. 語(yǔ)義化版本(SemVer)
版本格式:主版本號(hào).次版本號(hào).修訂號(hào),版本號(hào)遞增規(guī)則:
- 主版本號(hào)(MAJOR version):添加了不兼容的 API 修改,
- 次版本號(hào)(MINOR version):添加了向下兼容的功能性新增,
- 修訂號(hào)(PATCH version):添加向下兼容的問(wèn)題修正。
1.1.1. 補(bǔ)充說(shuō)明
- 版本號(hào)均從
0 開(kāi)始,一般使用 0.1.0 作為初始化開(kāi)發(fā)版本。
- 主版本號(hào)為零(0.y.z)的軟件處于開(kāi)發(fā)初始階段,一切都可能隨時(shí)被改變(即公共 API 不穩(wěn)定)。
1.0.0 的版本號(hào)用于界定公共 API 的形成。這一版本之后所有的版本號(hào)更新都基于公共 API 及其修改內(nèi)容。
- 主版本號(hào)更新時(shí),次版本號(hào),修訂號(hào)需要?dú)w零;次版本號(hào)更新時(shí),修訂號(hào)需要?dú)w零。
- 先行版本號(hào)(可選)被標(biāo)注在修訂版之后,先加上一個(gè)連接號(hào)再加上一連串以句點(diǎn)分隔的標(biāo)識(shí)符來(lái)修飾。范例:1.0.0-alpha、1.0.0-0.3.7、1.0.0-x.z。
- 版本編譯信息(可選)被標(biāo)注在修訂版或先行版本號(hào)之后,先加上一個(gè)加號(hào)再加上一連串以句點(diǎn)分隔的標(biāo)識(shí)符來(lái)修飾。范例:1.0.0-alpha+001、1.0.0+20130313144700、1.0.0-beta+exp.shaf85。
1.1.2. 實(shí)際應(yīng)用
Node.js, npm, Go Module, Kubernetes 等
1.1.3. 參考
- 語(yǔ)義化版本 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)
基于項(xiàng)目發(fā)布日期的版本控制約定,CalVer 并未像"SemVer"使用單一方案,而是引入了開(kāi)發(fā)人員的 標(biāo)準(zhǔn)術(shù)語(yǔ):
YYYY - 年份全稱(chēng) - 2006、2016、2106
YY - 年份縮寫(xiě) - 6、16、106
0Y - 以零填充的年份 - 06、16、106
MM - 月份縮寫(xiě) - 1、2 ... 11、12
0M - 以零填充的月份 - 01、02 ... 11、12
WW - 星期(自年初開(kāi)始)- 1、2、33、52
0W - 以零填充的星期 - 01、02、33、52
DD - 日 - 1、2 ... 30、31
0D - 以零填充的日 - 01、02 ... 30、31
1.2.1. 補(bǔ)充說(shuō)明
- 傳統(tǒng)的遞增版本號(hào)是從 0 開(kāi)始,而日期段是從 1 開(kāi)始的,且年份縮寫(xiě)和以零填充的年份是相對(duì)于 2000 年。
- 星期的使用通常與月/日互斥。
1.2.2. 實(shí)際應(yīng)用
Ubuntu, Twisted, Boltons 等
1.2.3. 參考
- 日歷化版本 / Calendar Versioning — CalVer: https://calver.org/overview_zhcn.html
2. 標(biāo)識(shí)符
2.1. Maven
- SNAPSHOT:快照版本,如 2.4.0-SNAPSHOT(開(kāi)發(fā)環(huán)節(jié))
- RELEASE:正式版本(可以放心使用)
2.2. Spring
- SNAPSHOT:快照版本,如2020.0.0-SNAPSHOT
- M數(shù)字(milestone):里程碑版本,如2020.0.0-M1、2020.0.0-M2
- RC數(shù)字(Release Candidate):最終產(chǎn)品的候選版本,如果未出現(xiàn)問(wèn)題則可發(fā)布成為正式版本。多數(shù)開(kāi)源軟件會(huì)推出兩個(gè) RC 版本,最后的 RC2 則成為正式版本。如2020.0.0-RC1、2020.0.0-RC2
- 無(wú)后綴:正式版本,如
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
- SP(Service Pack): 一套經(jīng)過(guò)測(cè)試的、累積的修補(bǔ)程序、安全更新、關(guān)鍵更新以及其他更新。
- KB(Knowledge Base):Microsoft 的在線(xiàn)知識(shí)庫(kù)。每個(gè) KB 文章都有一個(gè)唯一的編號(hào),用于跟蹤特定的問(wèn)題或更新。
2.3.1. 參考
- 標(biāo)準(zhǔn)術(shù)語(yǔ)說(shuō)明 - Windows Client | Microsoft Learn: https://learn.microsoft.com/zh-cn/troubleshoot/windows-client/installing-updates-features-roles/standard-terminology-software-updates
2.4. 其他常見(jiàn)標(biāo)識(shí)符
- alpha:內(nèi)部測(cè)試版本
- beta:公開(kāi)測(cè)試版本
- gamma:相對(duì)成熟的測(cè)試版,接近即將發(fā)行的正式版
- stable:穩(wěn)定版(正式版本)
- RTM:生產(chǎn)商發(fā)放(Release to Manufacturing)軟件產(chǎn)品準(zhǔn)備交付,提供給工廠壓片的版本,來(lái)自于以前還需要使用實(shí)體載具(光盤(pán),硬盤(pán)等)來(lái)進(jìn)行安裝的時(shí)代。
- GA:一般可用(General availability)所有必要的商業(yè)活動(dòng)(安全性,合法測(cè)試,銷(xiāo)售評(píng)估等)已經(jīng)完成,該軟件產(chǎn)品已經(jīng)可以發(fā)售的階段。
- RTW:網(wǎng)絡(luò)分發(fā)(Release to Web,Web發(fā)布)利用互聯(lián)網(wǎng)分發(fā)軟件
- OEM:計(jì)算機(jī)廠商隨計(jì)算機(jī)銷(xiāo)售的版本,不能零售。
- RTL:零售版(Retail),正式上架的零售版。
- Demo:演示版,試用版,包含正式版的部分功能。
- Enhance:增強(qiáng)版,會(huì)加入一些實(shí)用的新功能。

Heyinsun, CC BY 3.0 https://creativecommons.org/licenses/by/3.0, via Wikimedia Commons
3. 參考匯總
- spring 版本號(hào)命名 https://mp.weixin.qq.com/s/ZoUG9h1TndW2QpnPyGeIQA
- 語(yǔ)義化版本 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
- https://stackoverflow.com/a/2107490
- 標(biāo)準(zhǔn)術(shù)語(yǔ)說(shuō)明 - 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/
- 軟件版本周期 - 維基百科,自由的百科全書(shū): https://zh.wikipedia.org/zh-cn/軟件版本週期
- 軟件各種版本的含義!例如 RC,M,GA 等等 _ 軟件測(cè)試 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
- 歡迎大家轉(zhuǎn)載分享,本作品采用署名-非商業(yè)性使用-禁止演繹 4.0 國(guó)際進(jìn)行許可,轉(zhuǎn)載請(qǐng)標(biāo)明源地址,切莫修改或破壞原文結(jié)構(gòu),謝謝
|