【问题标题】:GitVersion and NuGet - Unexpected Version OrderingGitVersion 和 NuGet - 意外的版本排序
【发布时间】:2021-03-28 22:55:28
【问题描述】:

我有一个使用 nuget 打包并保存到 DevOps Artifacts 的项目。

我有一个 1.0.0-alpha.1 的当前开发版本,我创建了一个新分支 feature/Branch1。构建过程运行并创建一个新版本1.0.0-branch1,如果我将该分支重新合并到开发中,我会得到1.0.0-alpha.2

我在 VS 中查看 nuget 提要时的问题统计;它显示 1.0.0-branch1 是比 1.0.0-alpha.2 更新的预发布分支。

这是导致此...的步骤的缩写集...

数字表示版本实际创建的顺序。

我的期望错了吗?在指定包版本时,我所做的只是将其设置为 GitVersion.NugetVersion(尽管您可以看到我也尝试了其他一些选项)

【问题讨论】:

  • 值得指出的是,我正在尝试移植到 DevOps 的 Team City 版本,并且在 Team City 中,一切似乎都以正确的顺序结束。
  • 嗨@Stuart Hemming。这张票有更新吗?如果 zivkan 的回答可以给你一些帮助,请随时告诉我。只是提醒this

标签: git azure-devops nuget semantic-versioning gitversion


【解决方案1】:

NuGet 实现 Semantic Versioning 2.0.0。好吧,从技术上讲,它扩展了 SemVer2,因为 NuGet 的第一个版本使用了System.Version。因此,当添加 SemVer2 支持时,它是两种版本格式的超集。

无论如何,来自 SemVer2 规范:

  1. 优先级是指订购时版本之间的比较方式。
    1. 必须通过按顺序将版本分为主要、次要、补丁和预发布标识符来计算优先级(构建元数据不考虑优先级)。

    2. 当从左到右比较每个标识符时,优先级由第一个差异确定,如下所示:主要版本、次要版本和补丁版本始终以数字进行比较。

      示例:1.0.0

    3. 当主要、次要和补丁相等时,预发布版本的优先级低于普通版本:

      示例:1.0.0-alpha

    4. 必须通过从左到右比较每个点分隔标识符,直到发现如下差异,来确定具有相同主要、次要和补丁版本的两个预发布版本的优先级:

      1. 仅由数字组成的标识符以数字方式进行比较。
      2. 带有字母或连字符的标识符按 ASCII 排序顺序进行词法比较。
      3. 数字标识符的优先级始终低于非数字标识符。
      4. 如果前面的所有标识符都相同,则较大的预发布字段集比较小的集具有更高的优先级。

      示例:1.0.0-alpha

词法上“alpha”

您可以更改预发布片段的顺序以获得所需的顺序,此外请记住使用 . 将数字与字母字符分开,以确保数字不需要前导零即可正确排序。例如1.7.0-11.alpha1.7.0-11.another-new-bran.11.7.0-11.another-new-bran.21.7.0-14.alpha

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 2018-08-23
    • 2023-03-28
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多