這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
概述
版本管理主要用於對運行程式的版本追蹤,從而可以管理線上服務的運行版本,避免各個版本的服務程式混淆.這裡通常的做法為在程式中埋入版本標誌,同時該版本號碼會對應到git上的tag或release版本.從而對線上服務更改有一個更全面的資訊說明.這裡將介紹基於GNU風格一種版本命名方式.
1 版本號碼命名格式
主要版本號 . 子版本號碼 [. 修正版本號碼 [. 編譯版本號碼 ]] Major_Version_Number.Minor_Version_Number[.Revision_Number[.Build_Number]] 樣本 : 1.2.1, 2.0, 5.0.0 build-13124
具有相同名稱但不同主要版本號的程式集不可互換。例如,這適用於對產品的大量重寫,這些重寫使得無法實現向後相容性。
如果兩個程式集的名稱和主要版本號相同,而次版本號碼不同,這指示顯著增強,但照顧到了向後相容性。例如,這適用於產品的修正版或完全向後相容的新版本。
組建號的不同表示對相同源所作的重新編譯。這適合於更改處理器、平台或編譯器的情況。
名稱、主要版本號和次版本號碼都相同但修訂編號不同的程式集應是完全可互換的。這適用於修複以前發布的程式集中的安全性漏洞。
程式集的只有組建號或修訂編號不同的後續版本被認為是先前版本的Hotfix (Hotfix) 更新。
2. 版本號碼管理原則
1). 項目初版本時,版本號碼可以為 0.1 或 0.1.0, 也可以為 1.0 或 1.0.0.
2). 當項目在進行了局部修改或 bug 修正時,主要版本號和子版本號碼都不變,修正版本號碼加 1;
3). 當項目在原有的基礎上增加了部分功能時,主要版本號不變,子版本號碼加 1,修正版本號碼複位為 0,因而可以被忽略掉;
4). 當項目在進行了重大修改或局部修正累積較多,而導致項目整體發生全域變化時,主要版本號加 1;
5). 另外,編譯版本號碼一般是編譯器在編譯過程中自動產生的,我們只定義其格式,並不進行人為控制。
3. 項目中埋入版本資訊
針對每個服務,建立一個version的包用於版本管理,手動更改編譯指令碼中的版本號碼.且該版本號碼必須和gitlab上的版本號碼一一對應. 當執行二進位程式的並輸入-v參數時則輸出該程式的版本號碼,不輸入任何參數時則運行程式.
4.樣本
樣本見https://github.com/g4zhuj/ver...
使用時使用build指令碼編譯即可產生帶有提交資訊的程式,需要根據程式修改build指令碼中參數.
執行後產生的結果如下:
./example -v
Version: 0.0.1
Git commit: de07491
Go version: go version go1.6.2 linux/amd64
Build time: 2017-05-11 16:20:27
參考
https://golang.org/cmd/link/