【发布时间】:2017-03-16 09:58:09
【问题描述】:
我想对语义版本进行排序 (semver.org)
v1.4.0
v1.4.0-alpha
v1.4.0-alpha1
v1.4.0-patch
v1.4.0-patch9
v1.4.0-patch10
v1.4.0-patch2
v1.5.0
v1.5.0-alpha
v1.5.0-alpha1
v1.5.0-alpha2
v1.5.0-patch
v1.5.0-patch1
以适当的方式。比如version_compare() does in PHP(不是直接用,但是可以用)。
当然,sort -V|--version-sort 在这里不起作用。
$ echo 1.0 1.0-alpha | tr ' ' "\n" | sort --version-sort
1.0
1.0-alpha
有一些现有的方法吗?
附言
按照常识,应该遵循这个架构:
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
< 1.0.0-patch < 1.0.0-patch.1.
附言
Semver 2.0 不支持补丁,但它是必需的。
【问题讨论】:
-
“-patch”要求使得它与 semver 不兼容,所以你不应该调用这个 semver。另一方面,semver 不支持第三方补丁,它仅用于官方发布(在补丁的情况下,源开发人员应在 PATCH 部分的数字上加 1)。如果你真的在推,或许可以在版本结束后用+metadata来完成。
-
是的,这是真的。它不支持“补丁”类型的版本。关于元数据 - 包管理器不考虑元数据。他们切断了它。我说的是作曲家,确切地说。所以,可能会有问题。
-
意思是,它会产生意想不到的结果,你尝试获得1.0.0版本有两个版本,例如:1.0.0和1.0.0+super-patch。
标签: bash sorting version semantic-versioning