在云化平台中,组件按版本号统一管理,版本号遵循语义化版本控制,格式为:
major.minor.patch
云化平台对于组件按版本号进行统一管理,版本号遵循语义版本控制系统,格式为:
major.minor.patch
其中
major
: 项目进行重大更新,且包含不向后兼容的功能
minor
:仅在以向后兼容的方式添加新功能
patch
:仅在以向后兼容的方式修复错误,并且没有添加任何新的功能
业务App在其配置文件中声明其依赖的组件及版本,如:1.1.0
并且版本号可以缩写,没有写出来的部分表示为0,如:
对于其依赖的版本号,有三种声明方式:
1.指定最新版本
业务App的配置方式为: *
它最终会匹配仓库中的最新版本给业务App使用。
1.取major版本一致情况下的最大版本
由于major版本之间可能不兼容,指定主版本号,业务App的配置方式为:^1.2.0
这样写会尝试匹配主版本号为1的最大版本。
更多样例含义:
1.保证major和minor版本一致,只取最新的patch版本,写法为:
只进行Bug修复,只更新patch,业务App的配置方式为:~1.2.0
或者 -1.2.0
这样写会取major版本号为1、minor版本2、patch版本号最大的版本。
第一行给出当前仓库中指定组件的版本数量N,后续N行给出具体的每一个版本号(注意这里不保证版本号的大小顺序),最后一行给出业务App组件的版本号声明。
3<=N<=100000
版本号中的major
、minor
和patch
都满足0<=yersion<=100000
输出最终匹配到的版本号。
如果没有配置的版本号则输出None
输入
5
1.1.1
2.1
1.2.2
1.2.6
1.3.3
^1.2
输出
1.3.3
说明
对于目标组件,当前在仓库中有5个版本,分别为 1.1.1 2.1 1.2.2 1.2.6 1.3.3
业务App声明的组件依赖为^1.2,系统最终为其匹配到的版本为1.3.3
输入
5
1.1.1
2.1
1.2.2
1.2.6
1.3.3
*
输出
2.1
说明
*表示取所有版本中的最高版本,即2.1
输入
5
1.1.1
2.1
1.2.2
1.2.6
1.3.3
-1.2
输出
1.2.6
说明
−表示在major.minor
不变的情况下取patch
最大的版本号,这里
即:1.2.6
输入
6
1.1.1
2.1
1.2.2
1.2.6
1.3.3
1.4
^1.6
输出
None
说明
major
版本号为1 minor
大于等于6的版本号不存在,输出None