首页 > 其他分享 >什么是语义化版本里的 Major,Minor 和 Patch 版本号

什么是语义化版本里的 Major,Minor 和 Patch 版本号

时间:2023-10-03 18:36:27浏览次数:39  
标签:Major 版本号 功能 Patch API Minor

语义化版本(Semantic Versioning):Major、Minor 和 Patch 版本号解析

语义化版本,通常简称为SemVer,是一种软件版本号的标准化方案,旨在使软件版本号的管理更加透明和可预测。它主要由三个部分组成:Major(主版本号)、Minor(次版本号)和Patch(修订版本号)。在这篇文章中,我们将深入解释这三个部分的含义,并提供详细的示例来说明它们的用途和变更规则。

Major(主版本号)

Major版本号是语义化版本中的第一个数字,用于表示软件的主要版本变更。当进行大规模的、不兼容的变更时,应该增加Major版本号。主要变更包括:

  1. 不兼容的API更改:当你修改了软件的API,以至于旧版本的代码无法与新版本一起正常工作时,应该升级Major版本号。这可能包括删除、更改或添加API端点、参数或行为。

  2. 重大功能新增:如果你引入了重要的新功能,这可能会改变用户的工作流程或提供新的能力,也应该升级Major版本号。

  3. 废弃旧功能:当你计划废弃或删除旧的功能时,通常需要增加Major版本号,以提醒用户进行迁移。

示例:
假设有一个虚构的图形处理库,当前版本号为1.0.0。如果开发团队决定删除现有API中的一个核心功能,这将导致现有的用户无法升级到新版本而不修改其代码,那么新版本的版本号应该升级到2.0.0。

Minor(次版本号)

Minor版本号是语义化版本中的第二个数字,用于表示向后兼容的新功能添加。Minor版本号的变更包括:

  1. 新增功能:当你向软件添加新的功能,但这些功能不会破坏现有的API或功能,应该增加Minor版本号。

  2. 改进现有功能:如果你对现有功能进行了改进,但这些改进不会导致现有用户的代码无法工作,也应该升级Minor版本号。

  3. 向后兼容的API增强:如果你增加了现有API的参数、选项或能力,而这不会破坏已有的使用方式,也应该升级Minor版本号。

示例:
继续以图形处理库为例,当前版本号为1.2.0。开发团队决定在库中添加一个全新的图像滤镜功能,但这不会破坏任何现有功能或API。在这种情况下,版本号应升级到1.3.0。

Patch(修订版本号)

Patch版本号是语义化版本中的第三个数字,用于表示向后兼容的错误修复或小的改进。Patch版本号的变更包括:

  1. 错误修复:当你解决现有功能或API中的错误时,应该升级Patch版本号。这些修复不应引入新的功能或改变现有的行为。

  2. 性能优化:如果你对现有功能进行性能优化,而不会改变其行为,也应该升级Patch版本号。

  3. 小的改进或修改:如果你进行了一些小的改进,但它们不会破坏向后兼容性,应该升级Patch版本号。

示例:
继续以图形处理库为例,当前版本号为1.2.3。在测试中发现一个重要的Bug,它导致图像处理不正确。开发团队修复了这个问题,没有引入新的功能或改变现有功能,版本号应该升级到1.2.4。

总结

通过语义化版本,软件开发者和用户可以更容易地理解版本号的含义和变更规则。Major版本号表示不兼容的变更,Minor版本号表示向后兼容的新功能添加,而Patch版本号表示向后兼容的错误修复或小的改进。这种标准化的版本号方案有助于确保软件的升级和迁移过程更加可控和可预测,从而减少了意外的兼容性问题。

在实际开发中,语义化版本可以帮助开发团队更好地与用户沟通,同时也有助于自动化工具和依赖管理系统更好地处理软件包的版本依赖关系。这样,开发者和用户都可以更轻松地管理和维护他们的软件项目,确保其稳定性和可靠性。

标签:Major,版本号,功能,Patch,API,Minor
From: https://www.cnblogs.com/sap-jerry/p/17741429.html

相关文章

  • 必须收藏!双目立体匹配算法:Patch Match Stereo实用详解教程
    计算机视觉life聚焦计算机视觉、机器人SLAM、自动驾驶、AR领域核心技术。公众号本文对立体匹配算法:PatchMatchStereo实用进行了教程详解。作者丨3D视觉开发者社区01简介我们知道,现有立体匹配算法一般被分类为局部算法、全局算法和半全局算法,其中局部算法和半全局算法是应用最为广......
  • SpringMVC如何在web.xml中配置DispatcherServlet
    SpringMVC如何在web.xml中配置DispatcherServlet配置WEB-INF/web.xml===>配置前端控制器/中央控制器/分发控制器,用户所有的请求都会经过它的处理<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi......
  • Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: com.fa
    报错:Handlerdispatchfailed;nestedexceptionisjava.lang.NoSuchMethodError:com.fasterxml.jackson.databind.ObjectMapper.canSerialize(Ljava/lang/Class;Ljava/util/concurrent/atomic/AtomicReference;)Zjar包冲突,找到对应的jar包删除......
  • 如何给OpenWrt的源码打patch
    如何给OpenWrt的源码打patch目录如何给OpenWrt的源码打patch给package打patch给kernel打patch给package打patchOpenWrt有成熟的打patch机制,可以直接从服务器download源码,校验后,再结合自己开发的patch,打上,然后编译。开发环境:基于Ubuntu14.0432bit主机,编译demo_board机型。需......
  • 依赖的版本号
    依赖版本号场景:今天在学习guavaretry的时候,需要引入依赖,依赖的<version>中带有一个jre的字段,不太清楚,于是百度,获得如下结果。<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre<......
  • [Maven] 阿里仓库里的依赖版本号比较少
    我的init.gradle第一项配置的mavenLocal(),第二项是阿里,第三项没有配置境外网址。有一个老版本号的组件(idea版本早,内置的gradle版本低,所以相关的组件,默认也低),一直拉取不到。解决:(1)先去本地maven仓库找,组件的这个版本号下面,有一个.lock文件,证明gradle来这里拉取,但是没有。(2)我打开......
  • 阿里云PAI-灵骏大模型训练工具Pai-Megatron-Patch正式开源!
    作者:李鹏,王明,施晨,黄俊导读随着深度学习大语言模型的不断发展,其模型结构和量级在快速演化,依托大模型技术的应用更是层出不穷。对于广大开发者来说不仅要考虑如何在复杂多变的场景下有效的将大模型消耗的算力发挥出来,还要应对大模型的持续迭代。开发简单易用的大模型训练工具就成了......
  • opatch报补丁时,oui-patch.xml (Permission denied)报错
    前言一套19.19RAC环境,使用opatch工具安装数据库补丁,第一个节点成功安装,但在第二个节点执行opatch命令时报错。主要的错误有提示:/u01/app/oraInventory/ContentsXML/oui-patch.xml(Permissiondenied),具体如下所示。[grid@19crac235074478]$$ORACLE_HOME/OPatch/opatcha......
  • Python中Mock和Patch的区别
    在测试并行开发(TPD)中,代码开发是第一位的。尽管如此,我们还是要写出开发的测试,并执行它们来验证代码的准确性(而不是直接运行代码或使用控制台)。在Python中,我们有一个叫做单元测试的过程,里面有mock和patch函数。这篇文章将讨论这两个角色的用途和区别。Mock和Patch对象库的用途......
  • git不同分支同步代码,打patch补丁
    背景介绍一个代码管理者,不可避免的就是要将别人修改的代码同步到其他分支或其他仓库分支,因为不是所有人都有权限去合并的。合并代码有很多方式,比如直接文件夹覆盖、文件覆盖等。但上面的方法,繁琐还容易出错。写shell脚本也可以实现。这里主要想说,可以把内核打补丁的方法,......