之前写了一篇如何自动生成版本号的文章,
《让你的C程序,自动打印版本信息》
初衷是让自己的程序在运行时自动打印与版本相关的信息,
避免测试时因为版本信息不确定导致的一些功能对应不上去的问题,
当时留了一个坑,写一篇关于如何设计一个相对规范的版本号的文章,
现在把这个坑填上。
镜像版本号格式
-
project name
工程名字,比如YIKOU3568、YIKOU4412 -
firmware version
软件版本信息,详见下一节 -
comments
其他描述信息,
比如版本的os:Linux、threadx、vxworks等
或者对应的硬件平台ap、modem等
或者也可以是git 服务器最后一次commit的id
firmware version详细格式
名称 | 格式 | 长度(字节) | 说明 |
---|---|---|---|
v | v | 1 | 镜像版本号以v开头 |
Major | XX | 2 | 主版本号。比如 00:工程师样品,01:功能完成,02~:商业发布(商业发布后),升级codebase或者重大新功能递增 |
Minor | YY | 2 | 修复错误或添加次要功能等(如果“次要”版本增加,则需要发布说明) |
build ID | YYMMDDN | 7 | Y:年,M:月,D:日,N:当日第几次build(0,1,2……a,b,c……x,y,z) |
release type | T | 0-1 | T:研发发布测试版本,正式版可以不填写 |
举例
比如有以下软件版本要发布:
- 项目名称 :YIKOU3568,
- 项目基本功能完成,还没有正式商业发布,
- 此次的版本是修复了一些测试出的bug,之前minor版本为5
- 当年日期:2024年9月9日,
- 当天第2次编译,
- 当前仍然是测试版本:T。
信息如下:
- project name:YIKOU3568
- major:01
- monor:06
- build ID:240909
- N:1
- release type:T
最终版本信息如下:
YIKOU3568_v01.06.2409091_ T
实际使用中,大家根据自己的需要,可以自行规定个别字段的值。
最后
发布的镜像版本号,一定要和git服务器的commit对应起来,
发布的时候,一定要删除本地的工程,
从服务器pull下来最新的代码,
之后重新整体编译,
然后再做个大致的测试,
确保没有问题之后再发布该版本。
做到每一个镜像都要有明确的commit与之对应。
否则会出现,在某一个版本测试出了bug,
但是找不到这个镜像对应的源码,
在其他版本上该bug又无法复现,
bug无法闭环。