如何合并语义版本?

时间:2019-04-04 18:12:35

标签: semantic-versioning

我有一种产品以两种格式提供:单个包装和组合的单个包装。单个程序包是从各个程序包中以编程方式生成的。各个软件包的语义版本是手动确定和设置的。

如何根据尊重每个软件包语义版本规则的每个软件包的语义版本来计算单个软件包的语义版本?

出于讨论目的,假设我有三个单独的软件包:

a - 1.0.3
b - 2.1.0
c - 1.1.1

我将如何计算单个软件包的版本?

2 个答案:

答案 0 :(得分:1)

如果要为三个的每个组合创建唯一的版本,最简单的方法是显式显示每个组件:

a - 1.0.3
b - 2.1.0
c - 1.1.1

mainprog-a1.0.3-b2.1.0-c1.1.1

这可以帮助您识别组成整体的每个单独的组件。那有点长,所以您可以将其哈希:

sha256(a1.0.3-b2.1.0-c1.1.1)[1..10] = 6b5da1e87f

您希望将每个和的表存储到构成它的基本组件中,因此您可以轻松地查找这些组件。要么,要么您可以找到可逆的哈希算法来代替。

您当然可以像其他答案一样对数字求和:

a - 1.0.3
b - 2.1.0
c - 1.1.1

result - (1+2+1).(0+1+1).(3+0+1)
result - 4.2.4

但是在这里,由三个组件组成的4.2.4模棱两可。您必须想出一些令人费解的数学公式,以确保各个版本始终可以与最终软件包版本进行一对一映射。

答案 1 :(得分:0)

数字将变得非常大,但是一种解决方案是对各个组成部分求和:

a - 1.0.3
b - 2.1.0
c - 1.1.1

result - (1+2+1).(0+1+1).(3+0+1)
result - 4.2.4