在嵌入式开发中,固件与硬件强耦合、发布周期长、多版本并行维护,混乱的版本管理会显著增加调试成本与风险。
Semantic Versioning 2.0.0(语义化版本,简称 SemVer) 正是解决此问题的规范。它通过版本号直观表达代码变更的含义,让开发者、测试与硬件工程师都能快速判断兼容性。
SemVer 是一套让版本号变动传递明确信息的命名规范,旨在解决依赖混乱。
一、 基础格式(核心)
版本号格式为:MAJOR.MINOR.PATCH(主版本号.次版本号.补丁版本号)。
三者均为非负整数,且禁止前导零。
- MAJOR(主版本号)
当进行不兼容的破坏性变更时递增,次版本号与补丁版本号归零。
嵌入式场景:更换不兼容的MCU(如F4→H7)、删除或重命名核心API、修改通信协议。
- MINOR(次版本号)
当新增向后兼容的功能时递增,补丁版本号归零。
嵌入式场景:新增传感器驱动、增加通信接口、优化性能但不改变原有接口。
- PATCH(补丁版本号)
当进行向后兼容的Bug修复时递增。
嵌入式场景:修复串口丢包、修正传感器校准误差、解决死机重启等稳定性问题。
二、 扩展格式(嵌入式常用)
基础格式可扩展为:MAJOR.MINOR.PATCH-PRERELEASE+BUILD
- 预发布版本(PRERELEASE)
通过连字符 -附加,表示稳定性较低的测试版本。
常用标识:alpha(内部测试)、beta(公开测试)、rc(候选发布)。
示例:v1.0.0-beta.1
- 构建元数据(BUILD)
通过加号 +附加,用于构建追溯,不影响版本优先级排序。
常用信息:Git提交哈希、构建时间戳、硬件版本标识。
示例:v1.2.3+20250205、v1.2.3+PCBv1.1
三、 嵌入式场景示例
版本号含义与场景说明v0.1.0初始开发版,实现基础功能(如点灯),API可能变动。v0.2.0-alpha.1内部测试版,新增功能但存在已知Bug。v0.2.0正式发布版,新增功能且向后兼容v0.1.0。v0.2.1补丁版本,修复v0.2.0中的Bug,完全兼容。v1.0.0第一个稳定量产版本,API固化。v1.1.0+PCBv1.1新增功能,并特别适配PCBv1.1硬件。v2.0.0破坏性更新,不兼容所有v1.x.x版本,对应新硬件或架构重构。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |