之前寫了一篇如何自動生成版本號的文章,?《讓你的C程序,自動打印版本信息》?
初衷是讓自己的程序在運行時自動打印與版本相關(guān)的信息,?避免測試時因為版本信息不確定導致的一些功能對應(yīng)不上去的問題,當時留了一個坑,寫一篇關(guān)于如何設(shè)計一個相對規(guī)范的版本號的文章,現(xiàn)在把這個坑填上。
鏡像版本號格式
project name
工程名字,比如YIKOU3568、YIKOU4412
firmware version
軟件版本信息,詳見下一節(jié)
comments
其他描述信息,
比如版本的os:Linux、threadx、vxworks等
或者對應(yīng)的硬件平臺ap、modem等
或者也可以是git 服務(wù)器最后一次commit的id
firmware version詳細格式
名稱 | 格式 | 長度(字節(jié)) | 說明 |
---|---|---|---|
v | v | 1 | 鏡像版本號以v開頭 |
Major | XX | 2 | 主版本號。 比如 00:工程師樣品, 01:功能完成, 02~:商業(yè)發(fā)布(商業(yè)發(fā)布后),升級codebase或者重大新功能遞增 |
Minor | YY | 2 | 修復錯誤或添加次要功能等(如果“次要”版本增加,則需要發(fā)布說明) |
build ID | YYMMDDN | 7 | Y:年, M:月, D:日, N:當日第幾次build(0,1,2……a,b,c……x,y,z) |
release type | T | 0-1 | T:研發(fā)發(fā)布測試版本,正式版可以不填寫 |
舉例
比如有以下軟件版本要發(fā)布:
- 項目名稱 :YIKOU3568,項目基本功能完成,還沒有正式商業(yè)發(fā)布,此次的版本是修復了一些測試出的bug,之前minor版本為5當年日期:2024年9月9日,當天第2次編譯,當前仍然是測試版本:T。
信息如下:
- project name:YIKOU3568major:01monor:06build ID:240909N:1release type:T
最終版本信息如下:
YIKOU3568_v01.06.2409091_?T
實際使用中,大家根據(jù)自己的需要,可以自行規(guī)定個別字段的值。
最后
發(fā)布的鏡像版本號,一定要和git服務(wù)器的commit對應(yīng)起來,發(fā)布的時候,一定要刪除本地的工程,從服務(wù)器pull下來最新的代碼,
之后重新整體編譯,然后再做個大致的測試,確保沒有問題之后再發(fā)布該版本。
做到每一個鏡像都要有明確的commit與之對應(yīng)。
否則會出現(xiàn),在某一個版本測試出了bug,但是找不到這個鏡像對應(yīng)的源碼,在其他版本上該bug又無法復現(xiàn),bug無法閉環(huán)。