semantic-versioning - 如何组合语义版本?

标签 semantic-versioning

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

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

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

a - 1.0.3
b - 2.1.0
c - 1.1.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 是不明确的。您必须想出一些复杂的数学公式,以确保各个版本始终与最终包版本形成一对一的映射。

关于semantic-versioning - 如何组合语义版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55522506/

相关文章:

python - 语义版本控制对参数名称更改意味着什么?

gradle - 如何下载非依赖性工件作为语义版本控制的buildScript block 的一部分

c# - 在 C# csproj 中用零填充版本控制

javascript - 如果我更新一个 React 模块,使得现有代码可以运行,但 Jest 快照测试可能会中断,这应该是一个主要版本冲突吗?

nuget - 如何从 AppVeyor 发布 beta nuget 包

go - 向构造函数添加可变参数时如何在 Go 中进行版本控制?

travis-ci - 每个分支的 Travis CI 内部版本号

dependencies - 语义版本修补协议(protocol) : do you bump if dependencies bump?

semantic-versioning - 语义版本控制 - 传统 Web 应用程序的主要版本