標籤:
本文的主要內容轉載自:http://blog.csdn.net/lanmanck/article/details/7783924,篩選羅列出自認為比較重要的知識點,先歸納如下,以備後期查閱。
Technorati 標籤: 版本管理
---------------------------------------分割線開始-------------------------------------------------
1.2 APR 版本規則
對於任何大規模的軟體項目來說,必然會設計到分層次設計理念,而層與層之間的介面需要統一規範,穩定的API介面規範是必須要考慮的。由於項目的不斷髮展、進化,API介面的變化又是必然的趨勢,如何在穩定性和變化性之間尋求一個平衡,使得版本儘可能的平滑過渡,減少過渡過程中的工作量,為次,APR採用嚴格的版本規則來保證。使用者通過版本號碼即可很容易確定當期版本的相容性:向前相容、向後相容,還是前後同時相容。
向前相容,英文為 Forwards Compatibility,
向後相容,英文為 Backwards Compatibility,
先來解釋一下概念,比如一個軟體版本, 底層庫版本從 A ----> B ----> C ,上層應用軟體A1現在是基於A庫啟動並執行。現在新發布的底層庫版本是B,如果A1可以不經過修改,就可以在B庫上運行,那麼就是說,B庫是向後相容的。
舉個例子,用office 2007建立的檔案,可以用office 2003來開啟,那麼可以說 office 2007是向前相容的。
用office 2007建立的檔案,可以用office 2010來開啟,那麼可以說 office 2007是向後相容的。
1.2.1 版本概述
APR中使用三個整數來記錄版本號碼:Major:Minor:Patch。
Major代表主要版本號,它的變化通常意味著版本的重大變化,比如體繫結構的重新設計,API的重新設計等等,往往這種變化會導致向前不相容。
Minor代表次版本號碼,它的變化通常反映一些較大的更改,比如API的增加等
Patch代表補丁版本,它的變化通常反映對API函數的內部修改,而不影響API的介面。
除了原始碼方面的相容性,在版本的更替中,更能夠希望保持二進位的相容性,這意味著應用程式可以直接使用高版本的底層庫替換低版本的庫檔案,而不需要做任何修改,就可以編譯串連成功。
1.2.2 版本原則
通常來說,patch的變化不影響版本源碼和二進位層級的前向相容和與舊版相容,在patch補丁中,任何對API的增加、修改和刪除都是不允許的。
任何新函數、新變數以及新常量的引入,舊函數的廢除或替換都將可能導致次版本號碼的變化。
1.2.3 版本檢查
在編譯不同版本時,要確保能夠在編譯期間以及使用期間,能夠清晰簡單的檢查版本號碼。
通常會有類型如下的版本規則結構體,
typedef struct {
int major; /**< major number */
int minor; /**< minor number */
int patch; /**< patch number */
int is_dev; /**< is development (1 or 0) */
} apr_version_t;
major是當前程式版本的主要版本號,minor則是次版本號碼,patch對應的則是補丁號。is_dev則描述了目前的版本的狀態,發布版為1,測試版為0。
對此結構體的具體操作,需要有查看目前的版本類型、設定目前的版本類型、檢查目前的版本類型等等。
下面介紹Linux版本號碼相關知識:
major.minor.patch-build.desc
1、major:表示主要版本號,有結構性變化時才變更。
2、minor:表示次版本號碼,新增功能時才發生變化;一般奇數表示測試版,偶數表示生產版。
3、patch:表示對次版本的修訂次數或補丁包數。
4、build:表示編譯(或構建)的次數,每次編譯可能對少配量序做最佳化或修改,但一般沒有大的(可控的)功能變化。
5、desc:用來描述當前的版本特殊資訊;其資訊由編譯時間指定,具有較大的隨意性,但也有一些描述標識是常用的,
比如:
<1>rc(有時也用一個字母r),表示候選版本(release candidate),rc後的數字表示該正式版本的第幾個候選版本,多數情況下,各候選版本之間數字越大越接近正式版。
<2>smp,表示對稱式多處理器 (Symmetric MultiProcessing)。
<3>pp,在Red Hat Linux中常用來表示測試版本(pre-patch)。
<4>EL,在Red Hat Linux中用來表示企業版Linux(Enterprise Linux)。
<5>mm,表示專門用來測試新的技術或新功能的版本。
<6>fc,在Red Hat Linux中表示Fedora Core。
Alpha版本是自我裝載版,是比Beta版還早的測試版,一般不向外部發布,會有很多Bug,除非你也是測試人員,否則不建議使用。
Beta版本是測試版,這個階段的版本會一直加入新的功能。
RC版本(Release Candidate) 是發行候選版本。和Beta版最大的差別在於Beta階段會一直加入新的功能,但是到了RC版本,幾乎就不會加入新的功能了,而主要著重於除錯。
RTM版本(Release to Manufacture)是給工廠大量壓片的版本,內容跟正式版是一樣的。
OEM版本是給電腦廠商隨著電腦販賣的,也就是隨機版。只能隨機器出貨,不能零售。只能全新安裝,不能從舊有作業系統升級。如果買筆記型電腦或品牌電腦就會有隨機版軟體。封裝不像零售版精美,通常只有一面CD和說明書(授權書)。
RTL版本(Retail)是真正的正式版,正式上架零售版。
軟體版本研究