版本号命名指南

2023-10-31

首先看看某些常见软件的版本号:

  • Linux Kernel: 0.0.1,1.0.0,2.6.32,3.0.18…,若用 X.Y.Z 表示,则偶数 Y 表示稳定版本,奇数 Y 表示开发版本。

  • Windows:windows 98,windows 2000,windows xp,windows 7…,最大的特点是杂乱无章,毫无规律。

  • SSH Client:0.9.8。

  • OpenStack:2014.1.3,2015.1.1.dev8。

从上可以看出,不同的软件版本号风格各异,随着系统的规模越大,依赖的软件越多,如果这些软件没有遵循一套规范的命名风格,容易造成 Dependency Hell。所以当我们发布版本时,版本号的命名需要遵循某种规则,其中 Semantic Versioning 2.0.0 定义了一套简单的规则及条件来约束版本号的配置和增长。本文根据 Semantic Versionning 2.0.0 和 Semantic Versioning 3.0.0 选择性的整理出版本号命名规则指南。

版本号命名规则指南

版本号的格式为 X.Y.Z(又称 Major.Minor.Patch),递增的规则为:

  • X 表示主版本号,当 API 的兼容性变化时,X 需递增。

  • Y 表示次版本号,当增加功能时(不影响 API 的兼容性),Y 需递增。

  • Z 表示修订号,当做 Bug 修复时(不影响 API 的兼容性),Z 需递增。

详细的规则如下:

  1. X, Y, Z 必须为非负整数,且不得包含前导零,必须按数值递增,如 1.9.0 -> 1.10.0 -> 1.11.0

  2. 0.Y.Z 的版本号表明软件处于初始开发阶段,意味着 API 可能不稳定;1.0.0 表明版本已有稳定的 API。

  3. 当 API 的兼容性变化时,X 必须递增,Y 和 Z 同时设置为 0;当新增功能(不影响 API 的兼容性)或者 API 被标记为 Deprecated 时,Y 必须递增,同时 Z 设置为 0;当进行 bug fix 时,Z 必须递增。

  4. 先行版本号(Pre-release)意味该版本不稳定,可能存在兼容性问题,其格式为:X.Y.Z.[a-c][正整数],如 1.0.0.a1,1.0.0.b99,1.0.0.c1000。

  5. 开发版本号常用于 CI-CD,格式为 X.Y.Z.dev[正整数],如 1.0.1.dev4。

  6. 版本号的排序规则为依次比较主版本号、次版本号和修订号的数值,如 1.0.0 < 1.0.1 < 1.1.1 < 2.0.0;对于先行版本号和开发版本号,有:1.0.0.a100 < 1.0.0,2.1.0.dev3 < 2.1.0;当存在字母时,以 ASCII 的排序来比较,如 1.0.0.a1 < 1.0.0.b1。

  7. 注意:版本一经发布,不得修改其内容,任何修改必须在新版本发布!

一些修饰的词

  • alpha:内部版本

  • beta:测试版

  • demo:演示版

  • enhance:增强版

  • free:自由版

  • full version:完整版,即正式版

  • lts:长期维护版本

  • release:发行版

  • rc:即将作为正式版发布

  • standard:标准版

  • ultimate:旗舰版

  • upgrade:升级版

转载于:https://my.oschina.net/wugong/blog/1622919

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

版本号命名指南 的相关文章

  • 已下载1万次,PyPI库发现116 个恶意软件包,感染Windows 和 Linux 系统

    安全人员在 Python 包索引 PyPI 仓库中识别出116个恶意软件包 旨在通过定制后门程序感染 Windows 和 Linux 系统 网络安全研究人员在 Python 包索引 PyPI 仓库中识别出116个恶意软件包 旨在通过定制后门
  • 服务器硬件系统之维护拆装教程

    服务器硬件系统之维护拆装教程 在进行电缆连接 插拔 时 通过该电缆连接 或将要连接 的设备应当是没有加电的 即应当先将设备的电源关掉 然后再进行电缆连接 插拔 操作 否则 如果带电进行电缆连接 有可能会对设备造成无法预料的损坏 1 在增加服
  • linux 杀死指定端口的进程

    利用kill 9 和 ss antlup命令 kill 9 ss antlup grep 18100 awk print 7 awk F print 3
  • linux 定时任务crontab编写

    使用命令 crontab e 0 0 sh opt maxwellToMysql create data log sh 编写完保存
  • Linux配置Acado

    如果需要使用acado的matlab接口 请移步 Linux Matlab配置Acado 首先 安装必要的软件包 sudo apt get install gcc g cmake git gnuplot doxygen graphviz 在
  • Jenkins集成部署java项目

    文章目录 Jenkins简介 安装 Jenkins简介 Jenkins能实时监控集成中存在的错误 提供详细的日志文件和提醒功能 还能用图表的形式形象的展示项目构建的趋势和稳定性 官网 安装 在官网下载windows版本的Jenkins 但是
  • linux 定时任务crontab编写

    使用命令 crontab e 0 0 sh opt maxwellToMysql create data log sh 编写完保存
  • 性能分析与调优: Linux 内存观测工具

    目录 一 实验 1 环境 2 vmstat 3 PSI 4 swapon 5 sar 6 slabtop 7 numstat 8 ps 9 top 10 pmap 11 perf 12 bpftrace 二 问题 1 接口读写报错 2 sl
  • 双系统安装win7出现grub怎么解决

    我们在重装系统时 特别苹果装双系统时 会出现安装过程或者安装后的问题 发现系统开机显示grub 导致不能正常进入系统 让人很是着急 其实出现这种情况是因为系统找不到主引记录所导致 只要重建主引记录mbr即可解决 下面小编就教教大家win7系
  • 小白成功搭建Elasticsearch 只需五步(包含配置xpack)

    ElasticSearch 安装成功后 是不需要使用用户名和密码就可以访问的 这也是在配置skywalking的apm过程中 连接es数据库无需设置用户名和密码的原因 启动es也非常的简单 在 bin 目录下运行elasticsearch
  • 进程间通信

    进程间通信 进程间通信介绍 进程间通信目的 数据传输 一个进程需要将它的数据发送给另一个进程 资源共享 多个进程之间共享同样的资源 通知事件 一个进程需要向另一个或一组进程发送消息 通知它 它们 发生了某种事件 如进程终止 时要通知父进程
  • Linux 系统日志及其归档

    主要记录Linux 系统需要关注的日志文件 以及日志归档服务 rsyslogd 系统日志服务 rsyslogd 日志服务 rsyslogd reliable and extended syslogd 可靠 可扩展的系统日志服务 Rsyslo
  • 如何解读服务器的配置和架构?

    在当今数字化时代 服务器作为企业或组织的重要基础设施 其配置和架构对于保障业务的稳定运行至关重要 如何解读服务器的配置和架构 成为了一个备受关注的话题 本文将围绕服务器配置和架构的解读进行深入探讨 帮助读者更好地理解服务器的性能 扩展性和安
  • RF自动化环境安装+自动化实例解析

    RF定义 通用型的 自动测试框架 绝大部分的软件的的自动化系统都可以采用它 特点 测试数据文件 Test Data 对应一个个的测试用例 测试数据文件里面使用的功能小模块叫关键字 由测试库 Test Library Robot Framew
  • Python自动化操作:简单、有趣、高效!解放你的工作流程!

    今天跟大家分享一套自动化操作流程解决方案 基于 Python语言 涉及 pyautogui pyperclip pythoncom win32com 依赖包 安装命令为 pip install pyautogui pip install p
  • 基于java的物业管理系统设计与实现

    基于java的物业管理系统设计与实现 I 引言 A 研究背景和动机 物业管理系统是指对物业进行管理和服务的系统 该系统需要具备对物业信息 人员信息 财务信息等进行管理的能力 基于Java的物业管理系统设计与实现的研究背景和动机主要体现在以下
  • Kubernetes (十三) 存储——持久卷-动静态分配

    一 简介 二 NFS持久化存储步骤 静态分配 1 集群外主机用上次nfsdata共享目录中创建用来测试的pv 1 3 目录 用来对三个静态pv 2 创建pv的应用文件 vim pv yaml apiVersion v1 kind Persi
  • ssh:connect to host github.com port 22: Connection timed out

    解决流程 1 将github的端口由22改为443 ssh T p 443 git ssh github com 2 接着输入yes进行确认 The authenticity of host ssh github com 443 192 1
  • 短信系统搭建主要因素|网页短信平台开发源码

    短信系统搭建主要因素 网页短信平台开发源码 随着移动互联网的快速发展 短信系统已成为企业和个人进行信息传递的重要工具 建立一个高效可靠的短信系统对于企业来说非常重要 下面我们将介绍一些影响短信系统搭建的主要因素 1 平台选择 在搭建短信系统
  • 【安全-SSH】SSH安全设置

    今天发现自己的公有云服务器被攻击了 在这里插入图片描述 https img blog csdnimg cn direct cafdca04646f4b8b838400ec79ac282f png 然后查看了登录日志 如上图 ls sh va

随机推荐

  • BES平台耳机开发笔记

    有好长一段时间没有在CSDN平台发文章 接下来我将BES平台开发耳机部分做的一些小笔记与大家分享 这里包括了BES2000系列 BES2300系列 BES2500系列就不一一例举了 平时做下的笔记比较多 很难全部上传 我挑选一些比较关键的与
  • 关于频率综合器

    完整版请参考 https mazhaoxin github io 2018 08 12 About Frequency Synthesizer http 483v7j coding pages com 2018 08 12 About Fr
  • 跳表

    跳表 前言 一 什么是跳表 二 跳表的时间复杂度 三 跳表的空间复杂度 四 高效的动态插入和删除 1 插入操作 2 删除操作 五 跳表退化与跳表索引的动态更新 前言 对于二分查找算法 其底层依赖支持随机查找特性的数组 一般情况下只能依靠数组
  • R语言与线性回归分析

    文章目录 1 原始数据的分析 2 回归模型的拟合 参数估计和检验 3 变量选择 4 回归诊断 5 改进措施 6 岭回归 8 其他 基本假设 正态性 独立性 线性 同方差性 常用R包 car carData MASS leap 1 原始数据的
  • paddleocr 训练自己的数据,详细笔记

    目录 算法原理 第一步 制作数据集 数据标注工具 可视化标注 一定要制
  • MYSQL数据库部署--5.7版本数据库部署

    目录 MySQL5 7安装 二进制方式安装 一 安装前的准备 二 安装MySQL数据库 1 解压MySQL安装包 2 将解压后的文件拷贝到安装路径下 3 修改文件的权限 4 创建存放data的文件夹 5 在 etc下创建mysql的参数文件
  • Dubbo admin安装教程

    github下载代码 git clone https github com apache dubbo admin git 打包dubbo admin server java jar 运行 想看的界面需要按照nodejs Node js 完成
  • 全面总结: Golang 调用 C/C++,例子式教程

    https www cnblogs com linguanh p 8323487 html 掘金 https juejin im user 587f0dfe128fe100570ce2d8 博客 http www cnblogs com l
  • 2021.12.6—12.11周总结

    1 将数据结构的查找这一章学完了 线性表 顺序 折半 分块 和树表 二叉排序树 平衡二叉树 B 树和B 树 哈希表 的查找 2 前端的期末作品肝完了 三四天 基本上来说 后续有空应该会继续完善 3 写算法题 准备蓝桥杯吧 虽然过不了 还是去
  • 盒子集成weith,不继承height

    div class fa div class son 111 div div
  • 毕业设计-基于机器学习的短期负荷预测算法

    目录 前言 课题背景和意义 实现技术思路 一 电力负荷预测 二 典型负荷预测算法 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求
  • GO如何编写一个 Worker Pool

    作者 JustLorain https juejin cn post 7244733519948333111 前言 池化技术是一种资源管理技术 它通过提前创建和维护一组可重用的资源实例池 以便在需要时快速分配和回收这些资源 协程 gorou
  • java远程关机_java远程开关机

    packagetestFrame importjava awt Color importjava awt Font importjava awt event ActionEvent importjava awt event ActionLi
  • 关于STM32 下载程序下方提示internal command error的解决办法

    最近在调试一块板子 使用的是STM32CubeMx生成 结果发现 自己在烧写程序完成后 再次烧写就无法烧写成功 一直提示No Target connect 后在bulid output中发现了一个问题 在bulid output下方提示in
  • Memcache图形化管理工具MemAdmin

    1 美图 2 概述 下面给大家介绍一款 memcache图形化管理工具 MemAdmin 下载地址 http www junopen com memadmin MemAdmin是一款可视化的Memcached管理与监控工具 使用PHP开发
  • python网络爬虫之Max retries exceeded with url错误

    ConnectionError HTTPSConnectionPool host cq feibaos com port 443 Max retries exceeded with url news lists notice html re
  • IDEA导入本地项目

    1 文件 New Model from Existing Sources 2 选中需要导入的项目 3 选择maven文件选项 从外部模型导入模块 Idea本地项目部署路径 IDEA不会把你的项目部署到你的Tomcat安装目录 它会在操作系统
  • Weblogic SSRF漏洞

    1 漏洞描述 weblogic中存在SSRF漏洞 利用该漏洞可以发送任意HTTP请求 进而攻击内网中redis fastcgi等脆弱组件 2 影响版本 weblogic 10 0 2 10 3 6版本 3 POC http 192 168
  • 深入理解数据结构——堆栈的基本操作

    include
  • 版本号命名指南

    首先看看某些常见软件的版本号 Linux Kernel 0 0 1 1 0 0 2 6 32 3 0 18 若用 X Y Z 表示 则偶数 Y 表示稳定版本 奇数 Y 表示开发版本 Windows windows 98 windows 20