首页 > 解决方案 > 如何组合语义版本?

问题描述

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

如何根据每个单独包的语义版本计算单个包的语义版本,并尊重各个包的语义版本控制规则?

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

a - 1.0.3
b - 2.1.0
c - 1.1.1

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

标签: semantic-versioning

解决方案


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

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 对 1 映射。


推荐阅读