版本号规范
版本号规范通常指的是软件发布时所使用的编号体系,它用于标识软件的不同版本。一个良好的版本号系统可以帮助开发者、测试人员和用户清楚地了解软件的变更情况,以及不同版本之间的关系。目前最广泛接受的版本号规范是语义化版本控制(Semantic Versioning),简称 SemVer。
语义化版本控制 (SemVer)
语义化版本控制规定了版本号应采用 MAJOR.MINOR.PATCH
的格式:
- 主版本号 (MAJOR):当你做了不兼容的 API 修改时,增加主版本号。
- 次版本号 (MINOR):当你以向后兼容的方式添加功能时,增加次版本号。
- 修订版本号 (PATCH):当你做了向后兼容的问题修正时,增加修订版本号。
例如,版本 1.0.0
表示第一个正式发布的稳定版。如果接下来修复了一些错误但没有改变公共API,那么下一个版本将是 1.0.1
。如果增加了新功能但保持了向后兼容性,那么版本会变成 1.1.0
。如果有重大更新或更改导致现有代码不再兼容,则版本会升级到 2.0.0
。
其他版本号规范
除了 SemVer 之外,还有其他版本号规范被使用:
- 日期时间戳:有些项目可能使用构建日期作为版本的一部分,如
YYYY.MM.DD
或者更详细的YYYYMMDD.HHMMSS
格式。 - 内部版本号:一些公司可能会使用自定义规则,比如基于内部的版本控制系统中的修订号。
- 分支名称和提交哈希:在开发阶段,特别是当使用 Git 等分布式版本控制系统时,有时会使用分支名加上特定提交的简短哈希值来表示版本,如
feature-branch-name-abc1234
。
版本预发布和构建元数据
SemVer 还允许在版本号之后附加预发布版本和构建元数据:
- 预发布版本:用连字符
-
分隔,可以用来标记 alpha、beta 或 rc(候选发布)等状态,例如1.0.0-alpha.1
。 - 构建元数据:用加号
+
分隔,可以包含任意的构建信息,这不会影响版本比较的结果,例如1.0.0+build.1234
。
选择合适的版本号规范取决于项目的具体需求、团队的工作流以及对用户的透明度要求。对于大多数开源项目和遵循良好实践的企业级应用来说,语义化版本控制是一个非常合适的选择。