轉自 Semantic Versioning 2.0.0,有刪改。
一般來說,版本格式最主要的部分是 “主版本號.次版本號.修訂號”,遞增規則如下:
- 主版本號(
X
):不相容的 API 修改; - 次版本號(
Y
):向下相容的功能性新增; - 修訂號(
Z
):向下相容的問題修正。
特別地,當主版本號為 0 時,上述規則沒有那麼嚴格,因為前者意味著專案處於快速開發時期。
先行版本號及版本編譯資訊可以加到“主版本號.次版本號.修訂號”的後面,作為延伸。
具體地:
- 使用語義化版本控制系統地專案必須定義公共 API。
- 標註地版本號必須為
X.Y.Z
的格式,其中X
、Y
和Z
是非負整數,且禁止在數字前補零。X
是主版本號,Y
是次版本號,Z
為修訂號。每個元素必須以數值遞增。 - 標記版本號的軟體發行後,禁止改變該版本軟體的內容。任何修改必須以新版本發行。
- 主版本號為零(
0.y.z
)的軟體處於開發初始階段,一切可能隨時被改變。 1.0.0
的版本號用於界定公共 API 的形成。這一版本之後的版本號更新都基於公共 API 及其修改內容。- 修訂號
Z
(x.y.Z
|x > 0
)必須在只做了向下相容的修正時才遞增。這裡的修正指的是針對不正確結果進行的內部修改。 - 次版本號
Y
(x.Y.z
|x > 0
)必須在有向下相容的新功能出現時遞增。在任何公共 API 的功能被標記為棄用時也必須遞增。也可以在內部程式有大量新功能或改進被加入時遞增,其中可以包括修訂級別的改變。每當次版本號遞增時,修訂號必須歸零。 - 主版本號
X
(X.y.z
|X > 0
)必須(MUST)在有任何不相容的修改被加入公共 API 時遞增。其中可以包括次版本號及修訂級別的改變。每當主版本號遞增時,次版本號和修訂號必須歸零。 - 先行版本號可以被標註在修訂版之後,先加上一個連線號再加上一連串以句點分隔的識別符號來修飾。識別符號必須由 ASCII 字母數字和連線號
[0-9A-Za-z-]
組成,且禁止留白。數字型的識別符號禁止在前方補零。先行版的優先順序低於相關聯的標準版本。被標上先行版本號則表示這個版本並非穩定而且可能無法滿足預期的相容性需求。 - 版本編譯資訊可以被標註在修訂版或先行版本號之後,先加上一個加號再加上一連串以句點分隔的識別符號來修飾。識別符號必須由 ASCII 字母數字和連線號
[0-9A-Za-z-]
組成,且禁止留白。當判斷版本的優先層級時,版本編譯資訊可被忽略。