版本号规范

语义化版本表示

其规定了版本号如何表示,如何增加,如何进行比较,不同的版本号意味着什么。

版本号表示:X.Y.Z

X:主版本号,在做了不兼容的API修改时,提升该位数

Y:次版本号,在做了向下兼容的功能性新增时,提升该位数

Z:build号,修订号,在做了向下兼容的问题修正时,提升该位数

先行版本号以及版本编译信息则加到修订号的后面作为延伸。

主版本号为零(0.y.z)的软件处于开发初始阶段,一切都可能随时被改变。这样的公共 API 不应该被视为稳定版。1.0.0 的版本号用于界定公共 API 的形成。这一版本之后所有的版本号更新都基于公共 API 及其修改内容。使用语义化版本控制的软件必须定义公共 API。该 API 可以在代码中被定义或出现于严谨的文件内。无论何种形式都应该力求精确且完整。

其中 X、Y 和 Z 为非负的整数,且禁止在数字前方补零。每个元素必须以数值来递增。例如:1.9.1 -> 1.10.0 -> 1.11.0。标记版本号的软件发行后,禁止改变该版本软件的内容。任何修改都必须以新版本发行。

语义化版本的规范目的

软件管理领域里存在着被称为“依赖地狱”的情况,随着系统规模的增大,加入的包变多,问题的处理便会逐渐变得困难。

在依赖高的系统中发布新版本会面临版本控制被锁死的风险(对每一个依赖包改版才能完成升级)。

在依赖松散的系统中发布新版本会无法避免版本的混乱(兼容于未来的多个版本已经超出了合理数量)

因此作为解决的办法,项目使用一组简单的规则及条件来约束版本号的配置与增长,这些规范基于(但不限于)已经被各种封闭、开放源码软件所广泛使用的惯例所设计。一旦定义了公共API,便能通过版本号来说明修改内容,这样的规范方法使得版本号的更新包含了相邻版本间的底层代码和修改内容的信息。

参考文献:Tom Preston-Werner.语义化版本2.0.[EB/OL]

posted @   anesu  阅读(185)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示