语义化版本编号 Major、Minor、Patch

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

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

在RT-Thread内有如下代码段:

1
2
3
4
5
6
7
8
9
10
/* RT-Thread version information */
#define RT_VERSION_MAJOR 5 /**< Major version number (X.x.x) */
#define RT_VERSION_MINOR 1 /**< Minor version number (x.X.x) */
#define RT_VERSION_PATCH 0 /**< Patch version number (x.x.X) */

/* e.g. #if (RTTHREAD_VERSION >= RT_VERSION_CHECK(4, 1, 0) */
#define RT_VERSION_CHECK(major, minor, revise) ((major * 10000) + (minor * 100) + revise)

/* RT-Thread version */
#define RTTHREAD_VERSION RT_VERSION_CHECK(RT_VERSION_MAJOR, RT_VERSION_MINOR, RT_VERSION_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
https://www.oikiou.top/2024/f0099803/
作者
Oikiou
发布于
2024年1月19日
许可协议