版本号
版本号规范
- 格式:标准版本号格式为
x.y.z.e
,其中x
代表主版本号
,y
代表次版本号
,z
代表补丁号
,e
代表额外版本号
,每个字段之间由.
分隔。 - 主版本号:主版本号一般从0或者1开始,可包含修饰信息,如
stable_0
,dev_v1
,fixed_1
等,一般当项目进行重大修改,如API兼容性变化时,则版本号加1。 - 次版本号:次版本号是相对于主版本号而言,一般对应的是主版本下局部的调整,如增加功能时(不影响API的兼容性)。
- 补丁号:一般是Bug的修复或者细小的变动。
- 额外版本号:只对本身包含形如
x.y.z
版本号的三方仓库使用,一般不使用。 - 举例:
stable_v0.1.2.60
, 其中stable_v0
代表主版本号,1
代表次版本号,2
代表补丁号,60
代表额外版本号 - 规范:
- 一个标准的版本号必须包含
主版本号
以及次版本号
,补丁号
以及额外版本号
则为可选。 - 除了
主版本号
可包含修饰信息,其余字段不建议包含除数字以外的信息。 - 版本号必须按数值递增,如 dev_v0.0.1 -> dev_v1.0.0 -> dev_v1.11.0。
- 当项目进行重大修改时,
x
必须递增,y
和z
同时设置为0。 - 当局部调整时,
y
必须递增,同时z
设置为 0。 - 当进行Bug修复或者细小的变动时,
z
必须递增。
- 一个标准的版本号必须包含
版本号命名
- 命名版本号时,着重考虑
主版本号
字段,尽量将当前仓库的重要信息添加到主版本号
字段,例如代码来源,当前分支,当前状态,但是也不宜过长,需做适当取舍。 - 对于自建仓库,打
tag
时只需打上主版本号和次版本号,例如git tag -a dev_v1.0 -m "xxx"
, 打上tag
后,使用命令git describe --tags
,获得的版本号为dev_v1.0
,如果有5次新提交,获得的输出为v1.0-5-gxx
,则此时对应的版本号为v1.0.5
。 - 对于三方仓库,大多数都有自己的版本号,比如
uboot
,kernel
等,且一般都包含了xyz
字段,对于这些仓库,需使用其已经存在的版本号作为基础版本号,然后使用e
字段记录仓库修改。比如对于一个kernel
仓库,通过makefile
得知其版本号为4.6.23,使用命令git tag -a v4.6.23
打上tag后,如果有5次新提交,获得的输出为v4.6.23-5-gxx
,则此时对应的版本号为v4.6.23.5
。