一個(gè)不錯(cuò)的軟件版本命名規(guī)范!
之前寫了一篇如何自動(dòng)生成版本號(hào)的文章,
《讓你的C程序,自動(dòng)打印版本信息》
初衷是讓自己的程序在運(yùn)行時(shí)自動(dòng)打印與版本相關(guān)的信息,
避免測(cè)試時(shí)因?yàn)榘姹拘畔⒉淮_定導(dǎo)致的一些功能對(duì)應(yīng)不上去的問題,
當(dāng)時(shí)留了一個(gè)坑,寫一篇關(guān)于如何設(shè)計(jì)一個(gè)相對(duì)規(guī)范的版本號(hào)的文章,
現(xiàn)在把這個(gè)坑填上。
鏡像版本號(hào)格式

-
project name
工程名字,比如YIKOU3568、YIKOU4412 -
firmware version
軟件版本信息,詳見下一節(jié) -
comments
其他描述信息,
比如版本的os:Linux、threadx、vxworks等
或者對(duì)應(yīng)的硬件平臺(tái)ap、modem等
或者也可以是git 服務(wù)器最后一次commit的id
firmware version詳細(xì)格式

| 名稱 | 格式 | 長(zhǎng)度(字節(jié)) | 說明 |
|---|---|---|---|
| v | v | 1 | 鏡像版本號(hào)以v開頭 |
| Major | XX | 2 | 主版本號(hào)。比如 00:工程師樣品,01:功能完成,02~:商業(yè)發(fā)布(商業(yè)發(fā)布后),升級(jí)codebase或者重大新功能遞增 |
| Minor | YY | 2 | 修復(fù)錯(cuò)誤或添加次要功能等(如果“次要”版本增加,則需要發(fā)布說明) |
| build ID | YYMMDDN | 7 | Y:年,M:月,D:日,N:當(dāng)日第幾次build(0,1,2……a,b,c……x,y,z) |
| release type | T | 0-1 | T:研發(fā)發(fā)布測(cè)試版本,正式版可以不填寫 |
舉例
比如有以下軟件版本要發(fā)布:
- 項(xiàng)目名稱 :YIKOU3568,
- 項(xiàng)目基本功能完成,還沒有正式商業(yè)發(fā)布,
- 此次的版本是修復(fù)了一些測(cè)試出的bug,之前minor版本為5
- 當(dāng)年日期:2024年9月9日,
- 當(dāng)天第2次編譯,
- 當(dāng)前仍然是測(cè)試版本:T。
信息如下:
- project name:YIKOU3568
- major:01
- monor:06
- build ID:240909
- N:1
- release type:T
最終版本信息如下:
YIKOU3568_v01.06.2409091_ T
實(shí)際使用中,大家根據(jù)自己的需要,可以自行規(guī)定個(gè)別字段的值。
最后
發(fā)布的鏡像版本號(hào),一定要和git服務(wù)器的commit對(duì)應(yīng)起來,
發(fā)布的時(shí)候,一定要?jiǎng)h除本地的工程,
從服務(wù)器pull下來最新的代碼,
之后重新整體編譯,
然后再做個(gè)大致的測(cè)試,
確保沒有問題之后再發(fā)布該版本。
做到每一個(gè)鏡像都要有明確的commit與之對(duì)應(yīng)。
否則會(huì)出現(xiàn),在某一個(gè)版本測(cè)試出了bug,
但是找不到這個(gè)鏡像對(duì)應(yīng)的源碼,
在其他版本上該bug又無法復(fù)現(xiàn),
bug無法閉環(huán)。

浙公網(wǎng)安備 33010602011771號(hào)