Semantic Versioning
,简称SemVer
,是一种版本控制系统和版本号规范,
被广泛应用于软件开发中,特别是在开源项目和库的管理中。
它的主要目的是通过明确和一致的版本号规则,使软件的不同版本之间的兼容性
和变更
能够清晰地被理解和传达。
SemVer的版本号由三个部分组成,形如 X.Y.Z,其中 X、Y、Z 都是自然数。
这三部分分别代表:
1、 大版本(Major Version):即 X,
当软件进行了不兼容的API修改
时,大版本号会自增。
这通常意味着软件的核心功能或架构发生了重大改变,
可能导致旧版本中的代码在新版本中无法正常工作。
2、 次版本(Minor Version):即 Y,
当软件增加了向下兼容的功能
时,次版本号会自增。
这意味着新功能可以在旧版本的基础上使用,而不需要修改现有的代码。
3、 补丁版本(Patch Version):即 Z,
当软件进行了向下兼容的问题修复
时,补丁版本号会自增。
这通常是为了修复已知的错误或安全问题,而不会引入新的功能或更改。
此外,SemVer 还定义了一些其他的版本号规则,
如预发布版本(如 1.2.3-alpha
)和构建元数据(如 1.2.3+build.4
),
用于标识软件的不同开发阶段
和构建信息
。
其他版本号
在Semantic Versioning中,除了alpha
之外,还有其他几种标识来表示软件的不同开发阶段。
这些标识通常用于预发布版本
,以便区分软件的稳定版本
和仍在开发
中的版本。
以下是一些常见的预发布版本标识及其含义:
1、 alpha:这是最早的预发布版本,通常在软件开发周期的初期阶段发布。
Alpha版本通常包含许多新的功能和更改,但也可能有很多bug和不稳定性。
它们主要用于内部测试和开发人员之间的反馈。
2、beta:Beta版本是在Alpha版本之后发布的,通常包含较少的bug,
但仍然可能有一些未解决的问题。
Beta版本通常用于公开测试,以便从广大用户那里收集反馈。
3、rc (Release Candidate):Release Candidate(RC)版本是发布候选版本,意味着软件已经接近最终的稳定版本。
RC版本通常已经修复了大部分已知的bug,并准备进行最终的发布。
在这个阶段,主要是进行最后的测试和验证。
4、 snapshot:在某些上下文中,snapshot
可能用作预发布版本的标识,表示软件在某一时刻的快照。
它通常用于持续集成/持续部署(CI/CD)环境,其中每次构建都生成一个新的快照版本。
5、dev:在某些项目中,dev
可能用于表示开发中的版本,这些版本通常不用于公开测试,
而是用于内部开发和测试。
6、nightly:nightly
版本通常表示每天自动构建的版本,用于持续集成和自动化测试。
这些标识可以单独使用,也可以与主要的版本号(X.Y.Z)结合使用,
以创建完整的预发布版本号,例如1.2.3-beta.1
或1.2.3-rc.2
。
alpha->beta->rc
snapshot->dev->nightly