版本号命名规范[通俗易懂]

版本号命名规范[通俗易懂]写在前面:本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。原文:http://wsfdl.com/devops/2016/09/27/%E7%89%88%E6%9C%AC%E5%8F%B7.html#首先看看某些常见软件的版本号:LinuxKernel:0.0.1,1.0.0,2.6.32,3.0.18…,若用X.Y.Z表示,则偶数Y表示稳定版本,奇数Y表示开发版本。Windo

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

写在前面:

本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。

原文:http://wsfdl.com/devops/2016/09/27/%E7%89%88%E6%9C%AC%E5%8F%B7.html#

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

  • 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.0Semantic 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:升级版
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/195038.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • c语言和vc的区别_c++是c语言的升级版吗

    c语言和vc的区别_c++是c语言的升级版吗returnx+y}fnsub(x,yint)int{returnx-y}就像在Go和C中一样,函数不能重载。这简化了代码并提高了可维护性和可读性。函数可以在声明之前使用:add和sub在main之后声明,但仍然可以从main调用。对于V中的所有声明都是如此,并且不需要头文件或考虑文件和声明的顺序。V的目标之一是向具有不同编译器开发经验的开发人员开放。作者希望编译器不再是让人捉摸不透、只…

  • gridbagconstraints什么意思_java rectangle

    gridbagconstraints什么意思_java rectangle说明:GridBagLayout只有一个无参的构造器,要使用它就必须用setConstraints(Componentcomp,GridBagConstraintsconstraints)将它和GridBagConstraints关联起来!当GridBagLayout与无参的GridBagConstraints关联时,此时它就相当于一个GridLayout,只不过,用GridLayout布局的

  • php用空格分隔字符串,分割字符串空格[通俗易懂]

    php用空格分隔字符串,分割字符串空格[通俗易懂]【java易错点】javasplit分割字符串空格问题解析Strings=”@123.com”;String[]data=s.split(“@”);//以@分割字符串,获得@后的值。运行结果如下data[0]:””;data[1]:123.com;此时,你会发现,data数组里面存储的第一个元素是一个空格…文章落雨_2012-02-14832浏览量python…

  • GlassFish_jellyfish英文介绍

    GlassFish_jellyfish英文介绍GlassFish(水晶鱼)是一个免费、开放源代码的应用服务,它实现了JavaEE5。GlassFish的另外一个秘密武器,就是Grizzly,Grizzly是一个基于JavaNIO(NewIO)技术,并完全以Java实现的一个HTTP的Listener,有了Grizzly,GlassFish在静态文件传输方面的性能比Tomcat要强得多,而且可以支持更多的并发访问。GlassFish社团…

  • Java中使用double转BigDecimal的问题

    Java中使用double转BigDecimal的问题先上结论:不要直接用double变量作为构造BigDecimal的参数。线上有这么一段Java代码逻辑:1,接口传来一个JSON串,里面有个数字:57.3。2,解析JSON并把这个数字保存在一个float变量。3,把这个float变量赋值给一个BigDecimal对象,用的是BigDecimal的double参数的构造:newBigDecimal(doubleval)4,把这个BigDecimal保存到MySQL数据库,字段类型是decimal(15,2)。…

  • 写辅助脚本违法吗_网络游戏里的成功几率

    写辅助脚本违法吗_网络游戏里的成功几率转至http://www.cppblog.com/elva/archive/2008/02/19/42924.html一、前言  所谓游戏外挂,其实是一种游戏外辅程序,它可以协助玩家自动产生游戏动作、修改游戏网络数据包以及修改游戏内存数据等,以实现玩家用最少的时间和金钱去完成功力升级和过关斩将。虽然,现在对游戏外挂程序的“合法”身份众说纷纭,在这里我不想对此发表任何个人意见,让时间…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号