版本格式:主版本號(hào).次版本號(hào).修訂號(hào)
版本號(hào)遞增規(guī)則如下:
- 主版本號(hào):當(dāng)你做了不兼容的API 修改。
- 次版本號(hào):當(dāng)你做了向下兼容的功能性新增。
- 修訂號(hào):當(dāng)你做了向下兼容的問題修正。
先行版本號(hào)及版本編譯信息可以加到“主版本號(hào).次版本號(hào).修訂號(hào)”的后面快集,作為延伸定枷。
- 使用語義化版本控制的軟件“必須MUST”定義公共API。該API可以在代碼中被定義或出現(xiàn)
于嚴(yán)謹(jǐn)?shù)奈募?nèi)暇唾。無論何種形式都應(yīng)該力求精確且完整。 - 標(biāo)準(zhǔn)的版本號(hào)“必須MUST”采用XYZ的格式辰斋, 其中X策州、Y和Z為非負(fù)的整數(shù),且“禁止MUST
NOT”在數(shù)字前方補(bǔ)零宫仗。X是主版本號(hào)够挂、Y是次版本號(hào)、而Z為修訂號(hào)藕夫。每個(gè)元素“必須
MUST”以數(shù)值來遞增孽糖。例如:1.9.1 -> 1.10.0 -> 1.11.0。 - 標(biāo)記版本號(hào)的軟件發(fā)行后毅贮,“禁止MUST NOT”改變?cè)摪姹拒浖膬?nèi)容办悟。任何修改都“必須
MUST”以新版本發(fā)行。 - 主版本號(hào)為零(0.yz)的軟件處于開發(fā)初始階段滩褥,一切都可能隨時(shí)被改變病蛉。這樣的公共
API 不應(yīng)該被視為穩(wěn)定版。 - 1.0.0 的版本號(hào)用于界定公共API 的形成。這一版本之后所有的版本號(hào)更新都基于公共
API 及其修改內(nèi)容铺然。 - 修訂號(hào)Z(xyZ | x > 0)“必須MUST”在只做了向下兼容的修正時(shí)才遞增俗孝。這里的修正指的
是針對(duì)不正確結(jié)果而進(jìn)行的內(nèi)部修改。 - 次版本號(hào)Y(xYz | x > 0)“必須MUST”在有向下兼容的新功能出現(xiàn)時(shí)遞增魄健。在任何公共
API的功能被標(biāo)記為棄用時(shí)也“必須MUST”遞增驹针。也“可以MAY”在內(nèi)部程序有大量新功能或
改進(jìn)被加入時(shí)遞增,其中“可以MAY”包括修訂級(jí)別的改變诀艰。每當(dāng)次版本號(hào)遞增時(shí)柬甥,修訂
號(hào)“必須MUST”歸零。 - 主版本號(hào)X(Xyz | X > 0)“必須MUST”在有任何不兼容的修改被加入公共API時(shí)遞增其垄。其
中“可以MAY”包括次版本號(hào)及修訂級(jí)別的改變苛蒲。每當(dāng)主版本號(hào)遞增時(shí),次版本號(hào)和修訂
號(hào)“必須MUST”歸零绿满。 - 先行版本號(hào)“可以MAY”被標(biāo)注在修訂版之后臂外,先加上一個(gè)連接號(hào)再加上一連串以句點(diǎn)分隔
的標(biāo)識(shí)符號(hào)來修飾。標(biāo)識(shí)符號(hào)“必須MUST”由ASCII碼的英數(shù)字和連接號(hào)[0-9A-Za-z-]組
成喇颁,且“禁止MUST NOT”留白漏健。數(shù)字型的標(biāo)識(shí)符號(hào)“禁止MUST NOT”在前方補(bǔ)零。先行版
的優(yōu)先級(jí)低于相關(guān)聯(lián)的標(biāo)準(zhǔn)版本橘霎。被標(biāo)上先行版本號(hào)則表示這個(gè)版本并非穩(wěn)定而且可能
無法達(dá)到兼容的需求蔫浆。范例:1.0.0-alpha、1.0.0-alpha.1姐叁、 1.0.0-0.3.7瓦盛、1.0.0-
x.7.z.92。 - 版本編譯信息“可以MAY”被標(biāo)注在修訂版或先行版本號(hào)之后外潜,先加上一個(gè)加號(hào)再加上一連
串以句點(diǎn)分隔的標(biāo)識(shí)符號(hào)來修飾原环。標(biāo)識(shí)符號(hào)“必須MUST”由ASCII的英數(shù)字和連接號(hào)[0-9AZa-z-]組成,且“禁止MUST
NOT”留白处窥。當(dāng)判斷版本的優(yōu)先層級(jí)時(shí)嘱吗,版本編譯信息“可
SHOULD”被忽略。因此當(dāng)兩個(gè)版本只有在版本編譯信息有差別時(shí)滔驾,屬于相同的優(yōu)先層
級(jí)谒麦。范例:1.0.0-alpha+001、1.0.0+20130313144700嵌灰、 1.0.0-beta+exp.sha.5114f85弄匕。 - 版本的優(yōu)先層級(jí)指的是不同版本在排序時(shí)如何比較颅悉。判斷優(yōu)先層級(jí)時(shí)沽瞭,“必須MUST”把版
本依序拆分為主版本號(hào)、次版本號(hào)剩瓶、修訂號(hào)及先行版本號(hào)后進(jìn)行比較(版本編譯信息不
在這份比較的列表中)驹溃。由左到右依序比較每個(gè)標(biāo)識(shí)符號(hào)城丧,第一個(gè)差異值用來決定優(yōu)先
層級(jí):主版本號(hào)、次版本號(hào)及修訂號(hào)以數(shù)值比較豌鹤,例如1.0.0 < 2.0.0 < 2.1.0 < 2.1.1亡哄。當(dāng)
主版本號(hào)、次版本號(hào)及修訂號(hào)都相同時(shí)布疙,改以優(yōu)先層級(jí)比較低的先行版本號(hào)決定蚊惯。例
程序員的自我修養(yǎng)
語義化版本 12
如:1.0.0-alpha < 1.0.0。有相同主版本號(hào)灵临、次版本號(hào)及修訂號(hào)的兩個(gè)先行版本號(hào)截型,其優(yōu)
先層級(jí)“必須MUST”透過由左到右的每個(gè)被句點(diǎn)分隔的標(biāo)識(shí)符號(hào)來比較,直到找到一個(gè)差
異值后決定:只有數(shù)字的標(biāo)識(shí)符號(hào)以數(shù)值高低比較儒溉,有字母或連接號(hào)時(shí)則逐字以ASCII的
排序來比較宦焦。數(shù)字的標(biāo)識(shí)符號(hào)比非數(shù)字的標(biāo)識(shí)符號(hào)優(yōu)先層級(jí)低。若開頭的標(biāo)識(shí)符號(hào)都相
同時(shí)顿涣,欄 位比較多的先行版本號(hào)優(yōu)先層級(jí)比較高波闹。范例: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。@
忘了附帶鏈接了涛碑,有空加