軟件版本控制及語義化版本號

[toc]

語義化版本

使用語義化版本控制(Semantic Versioning)胡陪,你必須先有定義好的公共 API 。這可以透過文件定義或代碼強制要求來實現(xiàn)(API 文檔)牧牢。無論如何誓沸,這套 API 的清楚明了是十分重要的。一旦你定義了公共 API壹粟,你就可以透過修改相應(yīng)的版本號來向大家說明你的修改。考慮使用這樣的版本號格式:X.Y.Z (主版本號.次版本號.修訂號)垦页,先行版本號及版本編譯信息可以加到“主版本號.次版本號.修訂號”的后面,作為延伸薇组。

版本號遞增規(guī)則如下

  • 主版本號:當(dāng)你做了不兼容的 API 修改,遞增主版本號
  • 次版本號:當(dāng)你做了向下兼容的功能性新律胀,遞增次版本號
  • 修訂號:當(dāng)你做了向下兼容的問題修正宋光,遞增修訂號

語義化版本控制規(guī)范

  • 使用語義化版本控制的軟件必須定義公共 API。該 API 可以在代碼中被定義或出現(xiàn)于嚴謹?shù)奈募?nèi)炭菌。無論何種形式都應(yīng)該力求精確且完整罪佳。

  • 標準的版本號必須采用 X.Y.Z 的格式,其中 X黑低、Y 和 Z 為非負的整數(shù)赘艳,且禁止在數(shù)字前方補零。X 是主版本號克握、Y 是次版本號蕾管、而 Z 為修訂號。每個元素必須以數(shù)值來遞增菩暗。例如:1.9.1 -> 1.10.0 -> 1.11.0掰曾。

  • 標記版本號的軟件發(fā)行后,禁止改變該版本軟件的內(nèi)容停团。任何修改都必須以新版本發(fā)行旷坦。

  • 主版本號為零(0.y.z)的軟件處于開發(fā)初始階段,一切都可能隨時被改變佑稠。這樣的公共 API 不應(yīng)該被視為穩(wěn)定版秒梅。以 0.1.0 作為你的初始化開發(fā)版本,并在后續(xù)的每次發(fā)行時遞增次版本號

  • 1.0.0 的版本號用于界定公共 API 的形成舌胶。這一版本之后所有的版本號更新都基于公共 API 及其修改內(nèi)容捆蜀。當(dāng)你的軟件被用于正式環(huán)境,它應(yīng)該已經(jīng)達到了 1.0.0 版幔嫂。

  • 修訂號 Z(x.y.Z | x > 0)必須在只做了向下兼容的修正時才遞增辆它。這里的修正指的是針對不正確結(jié)果而進行的內(nèi)部修改。

  • 次版本號 Y(x.Y.z | x > 0)必須在有向下兼容的新功能出現(xiàn)時遞增婉烟。在任何公共 API 的功能被標記為棄用時也必須遞增娩井。也可以在內(nèi)部程序有大量新功能或改進被加入時遞增,其中可以包括修訂級別的改變似袁。每當(dāng)次版本號遞增時洞辣,修訂號必須歸零咐刨。

  • 主版本號 X(X.y.z | X > 0)必須在有任何不兼容的修改被加入公共 API 時遞增。其中可以包括次版本號及修訂級別的改變扬霜。每當(dāng)主版本號遞增時定鸟,次版本號和修訂號必須歸零。

  • 先行版本號可以被標注在修訂版之后著瓶,先加上一個連接號再加上一連串以句點分隔的標識符號來修飾联予。標識符號必須由 ASCII 碼的英數(shù)字和連接號 [0-9A-Za-z-] 組成,且禁止留白材原。數(shù)字型的標識符號禁止在前方補零沸久。先行版的優(yōu)先級低于相關(guān)聯(lián)的標準版本。被標上先行版本號則表示這個版本并非穩(wěn)定而且可能無法達到兼容的需求余蟹。范例:1.0.0-alpha卷胯、1.0.0-alpha.1、1.0.0-0.3.7威酒、1.0.0-x.7.z.92窑睁。

  • 版本編譯信息可以被標注在修訂版或先行版本號之后,先加上一個加號再加上一連串以句點分隔的標識符號來修飾葵孤。標識符號必須由 ASCII 的英數(shù)字和連接號 [0-9A-Za-z-] 組成担钮,且禁止留白。當(dāng)判斷版本的優(yōu)先層級時尤仍,版本編譯信息可被忽略。因此當(dāng)兩個版本只有在版本編譯信息有差別時吓著,屬于相同的優(yōu)先層級送挑。范例:1.0.0-alpha+001、1.0.0+20130313144700纺裁、1.0.0-beta+exp.sha.5114f85司澎。

  • 版本的優(yōu)先層級指的是不同版本在排序時如何比較。判斷優(yōu)先層級時谚殊,必須把版本依序拆分為主版本號蛤铜、次版本號丛肢、修訂號及先行版本號后進行比較剿干。由左到右依序比較每個標識符號,第一個差異值用來決定優(yōu)先層級:主版本號杠步、次版本號及修訂號以數(shù)值比較榜轿,例如:1.0.0 < 2.0.0 < 2.1.0 < 2.1.1。當(dāng)主版本號试躏、次版本號及修訂號都相同時,改以優(yōu)先層級比較低的先行版本號決定颠蕴。例如:1.0.0-alpha < 1.0.0助析。有相同主版本號、次版本號及修訂號的兩個先行版本號寡键,其優(yōu)先層級必須透過由左到右的每個被句點分隔的標識符號來比較雪隧,直到找到一個差異值后決定:只有數(shù)字的標識符號以數(shù)值高低比較,有字母或連接號時則逐字以 ASCII 的排序來比較脑沿。數(shù)字的標識符號比非數(shù)字的標識符號優(yōu)先層級低。若開頭的標識符號都相同時注服,欄位比較多的先行版本號優(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。

版本號信息

  • alpha:內(nèi)部測試版辜御。α是希臘字母的第一個屈张,表示最早的版本苇本,一般用戶不要下載這個版本瓣窄,這個版本包含很多BUG,功能也不全俺夕,主要是給開發(fā)人員和測試人員測試和找BUG用的贱鄙。

  • beta:公開測試版。β是希臘字母的第二個映九,顧名思義瞎颗,這個版本比alpha版發(fā)布得晚一些,主要是給“部落”用戶和忠實用戶測試用的引有,該版本任然存在很多BUG倦逐,但是相對alpha版要穩(wěn)定一些。這個階段版本的軟件還會不斷增加新功能檬姥。如果你是發(fā)燒友,可以下載這個版本抒巢。

  • RC(Release Candidate):候選版本荞雏。該版本又較beta版更進一步了平酿,該版本功能不再增加,和最終發(fā)布版功能一樣筑辨。這個版本有點像最終發(fā)行版之前的一個類似預(yù)覽版,這個的發(fā)布就標明離最終發(fā)行版不遠了棍辕。作為普通用戶,如果你很急著用這個軟件的話楚昭,也可以下載這個版本。

  • stable:穩(wěn)定版塘幅。在開源軟件中尿贫,都有stable版,這個就是開源軟件的最終發(fā)行版匾乓,用戶可以放心大膽的用了又谋。

  • RELEASE:最終版本。在前面版本的一系列測試版之后彰亥,終歸會有一個正式版本,是最終交付用戶使用的一個版本猪叙。該版本有時也稱為標準版仁卷。一般情況下,Release不會以單詞形式出現(xiàn)在軟件封面上芒帕,取而代之的是符號?。

作為一位負責(zé)任的開發(fā)者背蟆,你理當(dāng)確保每次套件升級的運作與版本號的表述一致∠保現(xiàn)實世界是復(fù)雜的,我們除了提高警覺外能做的不多垛叨。你所能做的就是讓語義化的版本控制為你提供一個健全的方式來發(fā)行以及升級套件柜某,而無需推出新的相依套件敛纲,節(jié)省你的時間及煩惱剂癌。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末佩谷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子寡具,更是在濱河造成了極大的恐慌,老刑警劉巖童叠,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厦坛,死亡現(xiàn)場離奇詭異乍惊,居然都是意外死亡,警方通過查閱死者的電腦和手機润绎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門莉撇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人其障,你說我怎么就攤上這事涂佃。” “怎么了辜荠?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵侨拦,是天一觀的道長。 經(jīng)常有香客問我狱从,道長,這世上最難降的妖魔是什么敞葛? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任惹谐,我火速辦了婚禮,結(jié)果婚禮上氨肌,老公的妹妹穿的比我還像新娘酌畜。我一直安慰自己,他們只是感情好桥胞,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布贩虾。 她就那樣靜靜地躺著,像睡著了一般伊群。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上在岂,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天蔽午,我揣著相機與錄音酬蹋,去河邊找鬼。 笑死范抓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的僧鲁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼斟叼,長吁一口氣:“原來是場噩夢啊……” “哼春寿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绑改,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎识腿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渡讼,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡硝全,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年楞抡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片召廷。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡竞慢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出筹煮,到底是詐尸還是另有隱情遮精,我是刑警寧澤本冲,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布檬洞,位于F島的核電站,受9級特大地震影響添怔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜广料,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望性昭。 院中可真熱鬧县遣,春花似錦、人聲如沸萧求。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至守问,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間穆端,已是汗流浹背仿便。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留荒勇,地道東北人闻坚。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像窿凤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子卷玉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345