一、简介
语义化版本控制 (Semantic Versioning,SemVer) 是一种版本命名规范,用于管理项目的版本更新和兼容性。其格式为 MAJOR.MINOR.PATCH,例如 1.4.2,其中每个部分分别代表重大版本、小版本和补丁版本。
二、版本号定义
1. MAJOR 版本号:当你做了不兼容的 API 修改时,需要增加此版本号。
2. MINOR 版本号:当你做了向下兼容的功能性新增时,需要增加此版本号。
3. PATCH 版本号:当你做了向下兼容的问题修正时,需要增加此版本号。
三、先行版本和构建元数据
除了主要的三部分,SemVer 还允许使用先行版本和构建元数据来提供更多的版本信息。
• 先行版本 (Pre-release version):在 PATCH 版本号之后添加先行版本标识,表示该版本尚未正式发布,可能仍在开发中。例如:1.0.0-alpha。
• 构建元数据 (Build metadata):在 PATCH 版本号或先行版本之后添加元数据,表示构建过程的特定信息。例如:1.0.0+20130313144700。
四、基本规则
1. 版本号递增规则:
• 修改 MAJOR 版本号后,MINOR 和 PATCH 版本号必须归零。
• 修改 MINOR 版本号后,PATCH 版本号必须归零。
2. 版本号递增的动机:
• 任何公共 API 的更改(不论是向前还是向后不兼容)都必须更改 MAJOR 版本号。
• 添加新的功能但不影响现有 API 时,只需增加 MINOR 版本号。
• 修复错误或进行微小的改进且不影响 API 时,只需增加 PATCH 版本号。
3. 先行版本和构建元数据:
• 先行版本会标记为不稳定,可能不会满足预期的兼容性要求。
• 构建元数据用于记录构建过程的详细信息,不会影响版本的排序或相对新旧关系。
五、实践案例
假设当前版本是 1.2.3:
• 修复 Bug:版本更新为 1.2.4。
• 添加新功能:版本更新为 1.3.0。
• 做不兼容的修改:版本更新为 2.0.0。
• 发布开发版本:版本更新为 2.0.0-alpha。
六、总结
语义化版本控制通过明确的版本命名规范,帮助开发者和用户轻松理解版本更新的内容和影响,从而简化项目的版本管理和依赖处理过程。