aboutcode-org / aboutcode-org/univers

NuGet isn't strictly SemVer

未关闭
#38 5 条评论 3 个 reaction 已指派 0 人 在 GitHub 查看
2-next bug easy good first issue
主要语言
Python
星标
50
派生
29
PR 合并指标
30 天内没有已合并 PR

描述

Similar to #5 (thank you so much for fixing it!!), it looks like NuGet is also assumed to be SemVer: https://github.com/nexB/univers/blob/21864169341c4949bd40c931cd8450488de24d64/src/univers/versions.py#L266

However, [NuGet's documentation](https://docs.microsoft.com/en-us/nuget/concepts/package-versioning#where-nugetversion-diverges-from-semantic-versioning) shows list important differences:

> NuGetVersion supports a 4th version segment, Revision, to be compatible with, or a superset of, [System.Version](https://docs.microsoft.com/en-us/dotnet/api/system.version). Therefore, excluding prerelease and metadata labels, a version string is Major.Minor.Patch.Revision. As per version normalization described above, if Revision is zero, it is omit from the normalized version string.
>
> NuGetVersion only requires the major segment to be defined. All others are optional, and are equivalent to zero. This means that 1, 1.0, 1.0.0, and 1.0.0.0 are all accepted and equal.
>
> NuGetVersion uses case insenstive string comparisons for pre-release components. This means that 1.0.0-alpha and 1.0.0-Alpha are equal.

The current implementation does not follow these rules:
```
> NugetVersion('1.0.0.0') < 'NugetVersion('1.0.0.1')
> False
```

```
>>> NugetVersion('1.0.0-Alpha') == NugetVersion('1.0.0-alpha')
False
```

Nuget's implementation appears to be here: https://github.com/NuGet/NuGet.Client/blob/dev/src/NuGet.Core/NuGet.Versioning/NuGetVersion.cs

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。