版本号命名规范
软件版本号是用于标识软件不同发布阶段或不同修订版本的数字、字母或它们的组合。在软件开发和维护过程中,版本号扮演着至关重要的角色,能够帮助开发者、测试人员、用户以及系统管理员区分软件的不同版本,跟踪软件的更新和变更,以及确保软件的兼容性和稳定性。
版本号特性
版本号由如下特性:
- 唯一性:每个版本号都应该是唯一的,以确保能够准确识别软件的特定版本。
- 可追踪性:版本号应该能够清晰地反映软件的发布顺序、变更历史和修复内容。
- 易读性:版本号应该易于理解和记忆,方便用户和开发人员进行沟通。
- 兼容性:版本号有时也用于指示软件之间的兼容性,特别是当软件依赖于其他库或框架时。
常见的版本号格式
常见的版本号格式有:
- 数字版本号:例如
1.0.0
、2.1.3
等 - 字母版本号:例如
alpha
、beta
、rc
等 - 混合版本号:例如
1.0.0-alpha
、2.1.3-rc.1
等 - 语义化版本号:例如
1.0.0
、2.1.3
、3.0.0-alpha.1
等
当前比较推崇的版本号格式是语义化版本号,下面将详细介绍。
语义化版本号(SemVer)
语义化版本号,通常简称为 SemVer(Semantic Versioning),是一种软件版本号的标准化方案。它旨在使软件版本号的管理更加透明和可预测,确保软件的升级和迁移过程更加可控,并减少意外的兼容性问题。
语义化版本号的组成
语义化版本号由三个部分组成:主版本号(Major)、次版本号(Minor)和修订版本号(Patch)。这三个部分通过点(.)分隔,形成一个标准的版本号格式,如 1.2.3
。
- 主版本号(Major):表示软件的主要版本变更。当进行大规模的、不兼容的变更时,应该增加主版本号。
- 次版本号(Minor):表示向后兼容的新功能添加。当软件以向下兼容的方式添加新功能时,应该增加次版本号。
- 修订版本号(Patch):表示向后兼容的错误修复或小的改进。
命名原则
- 项目初版,版本号可命名为
0.1.0
。 - 当项目有了重大的修改或者局部修改累计较多导致全局变化时,主版本号可以加
1
。一般的,当项目开发完成,测试通过,可以对外公布的时候,主版本号才从0
变为1
。这样看来,主版本为0
,就代表着项目处于开发阶段。 - 当项目只是增加部分功能时,主版本号不变,子版本号加
1
,修正版本号重置为0
。 - 当项目仅仅进行局部修改或者修复 BUG 时,只对修正版号加
1
。
先行版本号
当要发布大版本或者核心的 Feature时,但是又不能保证这个版本的功能 100% 正常。这个时候就需要发布先行版本。比较常见的先行版本包括:内测版、灰度版本了和 RC 版本。Semver 规范中使用 alpha
、beta
、rc
(以前叫做 gama
)来修饰即将要发布的版本。它们的含义是:
alpha
: 内部版本beta
: 公测版本rc
: 即 Release candidate,正式版本的候选版本
格式:主版本号.子版本号.修正版本号.[a-c][正整数]
例如:1.0.0-alpha.0
、 1.0.0-alpha.1
、 1.0.0-beta.0
、 1.0.0-rc.0
、 1.0.p-rc.1
等版本。
小结
版本号命名规范是软件开发中非常重要的一部分,它可以帮助我们更好地管理和维护软件的版本。通过遵循语义化版本号(SemVer)规范,我们可以确保软件版本号的唯一性、可追踪性、易读性和兼容性。当然,语义化版本号只是较为通用的做法。在实际项目中,我们还需要根据具体情况进行调整和优化,以适应项目的需求和特点。