版本號(hào)的命名
SemVer
根據(jù)國(guó)際主流的慣例,我們使用「語(yǔ)義化版本(Semantic Versioning)」的命名方式阐滩,有時(shí)簡(jiǎn)稱 SemVer痹升。
語(yǔ)義化版本號(hào)(以下簡(jiǎn)稱「版本號(hào)」)的格式是:<major>.<minor>.<patch>
沈自。即使用三位非負(fù)整數(shù)毡代,以點(diǎn)號(hào) .
連接。
如:1.4.15
床三、6.2.0
一罩。
-
<major>
即主版本號(hào),俗稱大版本升級(jí)撇簿。改動(dòng)到主版本號(hào)時(shí)聂渊,標(biāo)志著 API 發(fā)生了巨大變化,包括但不限于新增特性四瘫、修改機(jī)制汉嗽、刪除功能, 一般不兼容上一個(gè)主版本號(hào)找蜜。 -
<minor>
即次版本號(hào)饼暑,俗稱小版本升級(jí)。當(dāng)我們進(jìn)行常規(guī)的新增或修改功能時(shí),改動(dòng)次版本號(hào)弓叛,但是 必須是向前兼容的彰居。這也意味著我們 不能直接刪除某個(gè)功能。如若必要撰筷,我們可以在 changelog 中標(biāo)記某項(xiàng)功能為「即將刪除(Deprecated)」陈惰,然后在下一個(gè)大版本中將其徹底刪除。 - <patch> 即修訂號(hào)毕籽,俗稱 bug 修復(fù)抬闯。顧名思義,如果僅僅為了修復(fù)或調(diào)整一些小問(wèn)題关筒,我們就只改動(dòng)修訂號(hào)溶握。
那如何判斷一個(gè)修改應(yīng)該是改動(dòng)修訂號(hào)還是次版本號(hào)呢?視情況而定蒸播。比如對(duì)于「修改了 app 圖標(biāo)」這件事來(lái)說(shuō)睡榆,如果只是調(diào)整了圖標(biāo)的間距位置,那么可以認(rèn)作問(wèn)題修復(fù)廉赔;如果把整個(gè)圖標(biāo)換了肉微,配上了不同的標(biāo)語(yǔ)匾鸥,那么這應(yīng)該是一次功能改動(dòng)蜡塌。
注意事項(xiàng)
- 版本號(hào)前不要加 v。
- 不要在數(shù)字前補(bǔ) 0勿负。錯(cuò)誤示例:01.12.03馏艾。
- 每一位版本號(hào)按照 +1 的速度遞增,不要在版本號(hào)之間跳躍奴愉。
- 主版本號(hào)停留在 0 的版本號(hào)琅摩,即 0.x.x 應(yīng)當(dāng)視作還在內(nèi)部開(kāi)發(fā)階段的代碼。如果代碼有公共 API锭硼,此時(shí)不宜對(duì)外公開(kāi)房资。
- 1.0.0 的版本號(hào)用于界定公共 API 的形成。
- 當(dāng)次版本號(hào)遞增時(shí)檀头,修訂號(hào)歸零轰异;當(dāng)主版本號(hào)遞增時(shí),次版本號(hào)暑始、修訂號(hào)歸零搭独。
- 進(jìn)行新的開(kāi)發(fā)時(shí),版本號(hào)從 0.1.0 開(kāi)始廊镜。
- 如果不小心把一個(gè)不兼容的改版當(dāng)成了次版本號(hào)發(fā)行牙肝,應(yīng)當(dāng)發(fā)行一個(gè)新的次版本號(hào)來(lái)更正這個(gè)問(wèn)題并且恢復(fù)向下兼容。注意 不能去修改已發(fā)行的版本。
一個(gè)典型的版本號(hào)發(fā)展示例
- 0.1.0
- 0.1.1
- 0.1.2
- 0.2.0
- 1.0.0
- 1.1.0
- 1.1.1
- ……
預(yù)發(fā)版本號(hào)
在常規(guī)的版本號(hào)命名之上還有一個(gè)特殊類別配椭,叫做預(yù)發(fā)版本號(hào)(prerelease version)虫溜。它表示當(dāng)前版本是一個(gè)不穩(wěn)定的版本,使用它時(shí)需要注意風(fēng)險(xiǎn)股缸。
預(yù)發(fā)版本號(hào)的格式是 <major>.<minor>.<patch>-<tag>吼渡,即前半部分和常規(guī)版本號(hào)相同,然后跟上連接符 -乓序,后面再跟上字母數(shù)字點(diǎn)號(hào)連接符([0-9A-Za-z-.])寺酪。
一個(gè)典型的預(yù)發(fā)版本號(hào)形如 1.0.0-beta.1。建議使用這種 <major>.<minor>.<patch>-<stage>.<num> 的形式替劈。其中 <stage> 一般選用:alpha寄雀、beta、rc陨献。
預(yù)發(fā)版本號(hào)是常規(guī)版本號(hào)的附屬盒犹,因此在版本的大小比較上,仍然先比較常規(guī)版本號(hào)部分眨业;對(duì)于預(yù)發(fā)標(biāo)記部分的比較急膀,則是根據(jù) ASCII 字母表中的順序來(lái)進(jìn)行。
一個(gè)典型的預(yù)發(fā)版本號(hào)發(fā)展示例
- 0.9.0
- 1.0.0-alpha.1
- 1.0.0-alpha.2
- 1.0.0-beta.1
- 1.0.0-rc.1
- 1.0.0
- 1.0.1
- ……