语义化版本
目的
使人们在使用时不会陷入“依赖地狱”,也不会因为依赖关系的松散使得版本混乱。以此来约束版本的配置与增长
先说明API:应用程序接口(英语:Application Programming Interface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。相当于拉链,帮助拉链两边的布料连接到一起构成一个完整。
向下兼容:例如,在绝地求生最新的更新中,在没有更新新版本时旧版本仍能使用。(但是我觉得没做API,因为处在旧版本的玩家无法与新版本的玩家一起玩耍)
版本格式
1.X主版本号:做不兼容的API修改时(换拉链的时候)
2.Y次版本号:向下兼容的功能性新增。
3.Z修订号:在向下兼容时修复bug。
规范
[RFC 2119 ](https://www.ietf.org/rfc/rfc2119.txt)汉翻
1.用语义化版本控制的软件时MUST在公共API。该API必须是已经承认的在信息库中已有的。精确并完整的。
2.版本号MUST用XYZ格式,MUST NOT在数字前补零,元素(版本编号)MUST以数值递增。
3.软件发行后MUST NOT改变该版本内容,若要改变MUST以新版本发布。
4.主版本号位零的为在开发阶段,这种公共API不被视为稳定的。
5.在1.0.0版本号以后所以的更新都基于公共API几修改内容。
6.Z MUST在做向下兼容的修正(不正常结果的内部修改)时才递增。
7.Y MUST在向下兼容的新功能出现是递增,每次Y递增时,修订号MUST归零。
8.X MUST在不兼容的改变被加入公共API时递增。每次X递增时,Y与Z MUST 归零。
以下引用文章
9.先行版本号“可以MAY”被标注在修订版之后,先加上一个连接号再加上一连串以句点分隔的标识符号来修饰。标识符号“必须MUST”由ASCII码的英数字和连接号[0-9A-Za-z-]组成,且“禁止MUST NOT”留白。数字型的标识符号“禁止MUST NOT”在前方补零。先行版的优先级低于相关联的标准版本。被标上先行版本号则表示这个版本并非稳定而且可能无法达到兼容的需求。范例:1.0.0-alpha、1.0.0-alpha.1、 1.0.0-0.3.7、1.0.0-x.7.z.92。
10.版本编译信息“可以MAY”被标注在修订版或先行版本号之后,先加上一个加号再加上一连串以句点分隔的标识符号来修饰。标识符号“必须MUST”由ASCII的英数字和连接号[0-9A-Za-z-]组成,且“禁止MUST NOT”留白。当判断版本的优先层级时,版本编译信息“可SHOULD”被忽略。因此当两个版本只有在版本编译信息有差别时,属于相同的优先层级。范例:1.0.0-alpha+001、1.0.0+20130313144700、 1.0.0-beta+exp.sha.5114f85。
11.版本的优先层级指的是不同版本在排序时如何比较。判断优先层级时,“必须MUST”把版本依序拆分为主版本号、次版本号、修订号及先行版本号后进行比较(版本编译信息不在这份比较的列表中)。由左到右依序比较每个标识符号,第一个差异值用来决定优先层级:主版本号、次版本号及修订号以数值比较,例如1.0.0 < 2.0.0 < 2.1.0 < 2.1.1。当主版本号、次版本号及修订号都相同时,改以优先层级比较低的先行版本号决定。例如:1.0.0-alpha < 1.0.0。有相同主版本号、次版本号及修订号的两个先行版本号,其优先层级“必须MUST”透过由左到右的每个被句点分隔的标识符号来比较,直到找到一个差异值后决定:只有数字的标识符号以数值高低比较,有字母或连接号时则逐字以ASCII的排序来比较。数字的标识符号比非数字的标识符号优先层级低。若开头的标识符号都相同时,栏 位比较多的先行版本号优先层级比较高。范例:1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0- rc.1 < 1.0.0。