直播間 網(wǎng)站建設(shè)app關(guān)鍵詞推廣
Semantic Versioning 2.0.0
官網(wǎng)
給出一個(gè)版本號MAJOR.MINOR.PATCH
,增加如下:
MAJOR version
進(jìn)行不兼容的API更改時(shí)MINOR version
當(dāng)您以向后兼容的方式添加功能時(shí)PATCH version
當(dāng)您進(jìn)行向后兼容的錯(cuò)誤修復(fù)時(shí)
預(yù)發(fā)布(pre-release )和構(gòu)建元數(shù)據(jù)的附加標(biāo)簽可以作為MAJOR.MINOR.PATCH
格式的擴(kuò)展。
語義版本控制規(guī)范(SemVer)
本文檔中的關(guān)鍵詞“MUST”,“MUST NOT”,“REQUIRED”,“SHALL”,“SHALL NOT”,“SHOULD”,“SHOULD NOT”,“RECOMMENDED”,“MAY”和“OPTIONAL”的解釋與RFC 2119中描述的一致。
- 使用語義版本控制的軟件必須(MUST)聲明一個(gè)公共API。這個(gè)API可以在代碼本身中聲明,也可以嚴(yán)格存在于文檔中。無論如何,它都應(yīng)該(SHOULD )是精確和全面的。
- 正常的版本號必須采用
X.Y.Z
的形式,其中X
,Y
和Z
是非負(fù)整數(shù),并且不得包含前導(dǎo)零。X
表示主版本,Y
表示次版本,Z
表示補(bǔ)丁版本。每個(gè)元素必須以數(shù)字形式遞增。例如:1.9.0 -> 1.10.0 -> 1.11.0。 - 一旦一個(gè)版本化的包被發(fā)布,該版本的內(nèi)容絕對不能被修改。任何修改必須作為新版本發(fā)布。
- 主版本0 (
0.y.z
)用于初始開發(fā)。任何事情都可能隨時(shí)發(fā)生變化。公共API不應(yīng)該被認(rèn)為是穩(wěn)定的。 - 版本
1.0.0
定義了公共API。版本號在此版本發(fā)布后增加的方式取決于此公共API及其變化方式。 - 如果只引入向后兼容的錯(cuò)誤修復(fù),則補(bǔ)丁版本
Z
(x.y.Z | x > 0)必須遞增。錯(cuò)誤修復(fù)被定義為修復(fù)不正確行為的內(nèi)部更改。 - 如果向公共API引入新的向后兼容功能,則必須增加次版本
Y
(x.Y.z | x > 0)。如果任何公共API功能被標(biāo)記為棄用,它必須遞增。如果在私有代碼中引入了實(shí)質(zhì)性的新功能或改進(jìn),則可能會增加。它可能包括補(bǔ)丁級別的更改。當(dāng)次要版本增加時(shí),補(bǔ)丁版本必須重置為0。 - 如果向公共API引入任何向后不兼容的更改,則主版本X (X.y.z | X > 0)必須遞增。它還可能包括次要和補(bǔ)丁級別的更改。
當(dāng)主版本增加時(shí),補(bǔ)丁和次要版本必須重置為0
。 - 預(yù)發(fā)布(
pre-release
)版本可以通過在補(bǔ)丁版本后面立即添加連字符和一系列點(diǎn)分隔的標(biāo)識符來表示。標(biāo)識符必須只包含ASCII字母數(shù)字和連字符[0-9A-Za-z-]
。標(biāo)識符不能為空。數(shù)字標(biāo)識符不能包含前導(dǎo)零。預(yù)發(fā)布版本的優(yōu)先級低于相關(guān)的正常版本。預(yù)發(fā)布版本表示該版本不穩(wěn)定,可能無法滿足其關(guān)聯(lián)的正常版本所表示的預(yù)期兼容性需求。例如:1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92, 1.0.0-x-y-z.--
. - 構(gòu)建元數(shù)據(jù)(
Build metadata
)可以通過在補(bǔ)丁或預(yù)發(fā)布版本后立即添加加號和一系列點(diǎn)分隔的標(biāo)識符來表示。標(biāo)識符必須只包含ASCII字母數(shù)字和連字符[0-9A-Za-z-]
。標(biāo)識符不能為空。在確定版本優(yōu)先級時(shí),必須忽略構(gòu)建元數(shù)據(jù)。因此,只有構(gòu)建元數(shù)據(jù)不同的兩個(gè)版本具有相同的優(yōu)先級。例如:1.0.0-alpha+001, 1.0.0+20130313144700, 1.0.0-beta+exp.sha.5114f85, 1.0.0+21AF26D3----117B344092BD
. - 優(yōu)先級指的是版本在排序時(shí)如何相互比較。
1
優(yōu)先級必須通過按順序?qū)姹緞澐譃橹?、次、補(bǔ)丁和預(yù)發(fā)布標(biāo)識符來計(jì)算(構(gòu)建元數(shù)據(jù)不計(jì)入優(yōu)先級)。
2
優(yōu)先級由從左到右比較每個(gè)標(biāo)識符時(shí)的第一個(gè)差異決定,如下所示:主要、次要和補(bǔ)丁版本總是用數(shù)字來比較。
例如:1.0.0 < 2.0.0 < 2.1.0 < 2.1.1
3
當(dāng)major, minor和patch相等時(shí),預(yù)發(fā)布版本的優(yōu)先級低于正常版本:
例如:1.0.0-alpha < 1.0.0
4
具有相同主、次和補(bǔ)丁版本的兩個(gè)預(yù)發(fā)布版本的優(yōu)先級必須通過從左到右比較每個(gè)點(diǎn)分隔標(biāo)識符來確定,直到發(fā)現(xiàn)如下差異:
a. 僅由數(shù)字組成的標(biāo)識符用數(shù)字進(jìn)行比較。
b.帶有字母或連字符的標(biāo)識符按ASCII排序順序進(jìn)行詞法比較。
c.數(shù)字標(biāo)識符的優(yōu)先級總是低于非數(shù)字標(biāo)識符。
d.如果前面所有的標(biāo)識符相等,那么較大的預(yù)發(fā)布字段集比較小的字段集具有更高的優(yōu)先級。
例如:1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0