天天看點

聽,是版本在說話

目錄

簡介

讓版本說話

為什麼需要管控版本

語義化版本規範

總結

不知道大家都是怎麼定義軟體的版本号的?是老老實實的從1.0版本開始,還是像埃裡森那樣直接從2.0開始,還是從beta版本0.x開始呢?

雖然一眼看過去,我們肯定會希望使用版本号最高的那款軟體,因為版本号越高,代表着其疊代越多,功能越穩定。

這裡不讨論版本高低的好壞,這裡要讨論的是如何讓版本說話。

為什麼要讓版本說話?版本會怎麼說話呢?

讓版本說話的意思是,版本本身就代表一定的含義,通過版本号就可以基本了解這個版本的大緻情況。

那麼為什麼要管控版本呢?那是因為在現代的應用中,一個項目需要大量依賴第三方項目,而第三方項目又會依賴其他的項目,進而生成一個龐大的依賴集合。

在這種龐大的版本依賴情況下,我們需要大緻上知道現有的項目可以依賴第三方項目的大緻版本範圍,進而在依賴項目版本更新的情況下,不至于導緻本項目出現問題。

是以我們需要一個版本制定規則。

這就是我們今天要講的語義化版本.

在語義化版本中,版本号是由三部分組成的,它的格式是:X.Y.Z(主版本号.次版本号.修訂号)。

如果隻是bug的修複,而不影響 API 時,遞增修訂号,如果API 保持向下相容的新增及修改時,遞增次版本号;如果進行不向下相容的修改時,遞增主版本号。

這樣要用什麼樣的版本是不是很清晰了?

具體而言,X、Y 和 Z 為非負的整數,其中X 是主版本号、Y 是次版本号、而 Z 為修訂号。并且需要遵循下面的一些原則,以保證語義化版本規範的正确性。 我們看下有哪些規則:

在一個版本釋出後,禁止對改版本再進行修改。如果需要修改,則遞增版本号。

主版本号為0的版本,如0.1.3,表示軟體還在初始的開發階段,軟體并不穩定。

1.0.0 之後的版本才被視為穩定的版本。

如果是對API進行内部的bug修複,則遞增Z的值。

如果是新增了向下相容的新功能,則遞增Y的值。如果有API被标記為廢棄的話,也需要遞增Y的值。也可以在包含大量的新功能的時候遞增Y值。每當Y值遞增的時候,Z值需要歸零。

Y會在添加任何不向下相容的API的時候進行遞增。每當主版本号遞增時,次版本号和修訂号必須歸零.

除了主版本之外,還可以在主版本後面添加上先行版本号. 先行版本号是由數字和字母組合而成,以一個連接配接号接在主版本後面。比如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-alpha+001、1.0.0+20130313144700、1.0.0-beta+exp.sha.5114f85。

以上就是語義化版本的基本說明,如果大家都按照上面提到的語義化規範來進行版本的編寫話,那麼我們的軟體世界将會變得無限美好。

本文已收錄于 http://www.flydean.com/03-semantic-version/ 最通俗的解讀,最深刻的幹貨,最簡潔的教程,衆多你不知道的小技巧等你來發現! 歡迎關注我的公衆号:「程式那些事」,懂技術,更懂你!