语义化版本2.0.0介绍
1|0什么是语义化版本号?
- 语义化版本号,这个词说明首先是一个版本号,再者才是语义化的版本号。
- 说起版本号,我们日常应该有看到,例如微信的每次更新都有版本号。
- 版本号是用来区分每次发布的版本的。这样方便软件开发人员迭代优化。而本篇文章所说的语义化版本号,是在版本号基础上添加语义信息。
- 换句话说,语义化版本号就是让版本号可以表达语义信息,看到本次发版的版本号,就能知道这个版本做了什么。
2|0语义化版本2.0.0
- 语义化版本控制的规范是由 Gravatars 创办者兼 GitHub 共同创办者 Tom Preston-Werner 所建立。
- 当我们发版新的包时,语义化版本号规则:
- 版本格式:主版本号.次版本号.修订号,版本号递增规则如下:
- 主版本号:当你做了不兼容的 API 修改,
- 次版本号:当你做了向下兼容的功能性新增,
- 修订号:当你做了向下兼容的问题修正。
- 先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。
- 版本格式:主版本号.次版本号.修订号,版本号递增规则如下:
- 建立这套规范的契机,大家也可以移步到这里查看,总结来说就是,当一个系统越大越庞大,加入的包越来越多时,避免陷入“依赖地狱”的死亡之谷。
- 因为官网已经介绍的很清楚了,我这里只是作抛砖引玉,大家可以去这里获取第一手资料。
3|0这个有哪些作用呢?
- 针对发包的人员。可以根据每次发包前做的改动,来确定是更改语义化版本号的哪个部分。例如
rapidocr_onnxruntime
包,当前版本是v1.2.3
:- 当我做了向下兼容的问题修正,应该只增加最后一位,版本号变为
v1.2.4
- 当我为这个包增加了向下兼容的功能模块,那应该增加中间位置,末位清零,版本号变为
v1.3.0
- 当我更新了包的API接口,并不能向下兼容,应该增加第一位数字,其他位置清零,版本号变为
v2.0.0
- 当我做了向下兼容的问题修正,应该只增加最后一位,版本号变为
- 针对使用包的人员。我们使用一个包时,可以先看它的版本号,如果遵守语义化版本号,我们可以限定使用包的版本范围,来避免不兼容的问题发生。
- 例如:之前看到一个包依赖
distlib
库,写的就是dislib<1,>=0.3.6
。这就说明只依赖distlib
这个库1.0版本以下,大于等于0.3.6的版本。从字面意思上来看,这就是避免1.0以上版本可能会出现不详细兼容的问题。
- 例如:之前看到一个包依赖
4|0写在最后
- 目前经我手发的包,版本号均已经遵从语义化版本规范。详情可以参见RapidOCR中所有的pypi的包。
- 有了这个规范,冷冰冰的版本号不再毫无意义,而是变得有意思起来。
__EOF__

本文作者:Danno
本文链接:https://www.cnblogs.com/shiwanghualuo/p/17245070.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/shiwanghualuo/p/17245070.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
-----------------------------------------
你驻足于春色中,于那独一无二的春色之中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!