标签: semantic-versioning

如何创建包含预发布的nuspec依赖项

一些背景:

我有4个带有依赖项的nuget包.它们都处于预发布模式,并且按照自己的节奏从alpha变为"稳定".我希望能够在依赖关系定义中指定应包含预发布,但是当"稳定"版本可用时,它应该更新为稳定版本.

NuGet Docs中,版本控制规则是定义[]包含您指定的版本号,()排除您指定的版本号.

关于nuspec文件中版本影响的一些示例:

 <dependencies>
     <dependency id="MyComponent" version="1.2.0" />
 </dependencies>
Run Code Online (Sandbox Code Playgroud)

==>这将安装MyComponent 1.2.0或更高版本.(不包括预发布1.2.0-alpha)

 <dependencies>
     <dependency id="MyComponent" version="[1.2.0" />
 </dependencies>
Run Code Online (Sandbox Code Playgroud)

==>这将安装MyComponent 1.2.0或更高版本.(不包括预发布1.2.0-alpha)

 <dependencies>
     <dependency id="MyComponent" version="[1.2.0,2)" />
 </dependencies>
Run Code Online (Sandbox Code Playgroud)

==>这将安装MyComponent 1.2.0,但不包括版本2.0.0.(不包括预发布1.2.0-alpha,但包括预发布2.0.0-alpha)

目前我设置:

 <dependencies>
     <dependency id="MyComponent" version="(1.1.32767" />
 </dependencies>
Run Code Online (Sandbox Code Playgroud)

但我发现这是一种非常丑陋的方式,并没有真正反映现实.(如果版本1.1.32767.1存在怎么办?)

我想知道如何指定您希望在最低版本中包含预发布版本?

nuget semantic-versioning

23
推荐指数
1
解决办法
1万
查看次数

我应该固定我的Python依赖版本吗?

我即将发布一个我在过去几周一直在工作的Python库.我已经阅读了很多关于Python依赖项的内容,但还不是很清楚:

有些人假装你永远不应该固定你的依赖版本,因为它会阻止你的库用户升级这些依赖项.

其他一些声称你应该总是固定你的依赖版本,因为它是保证你的发布以它开发它的方式工作的唯一方式,并防止依赖的重大变化在你的库中造成严重破坏.

我不知何故去了一个混合解决方案,在那里我假设我的依赖关系使用语义版本控制并仅固定主要版本号(比如说somelib >= 2.3.0, < 3),除非主要版本号是0(语义版本控制规定这些版本被认为是易变的并且可能会破坏API,即使只有补丁号被碰撞).

截至目前,我不确定哪种方式最好.是否有官方指南(甚至可能是PEP?),它规定了有关Python依赖关系的最佳实践以及如何指定它们?

python versioning dependencies pip semantic-versioning

21
推荐指数
3
解决办法
3528
查看次数

如何获得semver Maven版本的主要部分?

是否有可能获得主要版本(<Major>.<Minor>.<Patch>)project.version

例如,如果我的版本是1.3.4,我想1稍后在同一个pom.xml的配置中使用它

就像是:

<configuration>
  <name>project_name.${project.version:major}</name>
</configuration>
Run Code Online (Sandbox Code Playgroud)

如果没有,有哪些替代方案?

maven semantic-versioning

17
推荐指数
2
解决办法
7238
查看次数

是否有npm版本预发布标识符?

有一个非常方便的npm version命令.除了喜欢争论major,minor而且patch它接受类似的参数prerelease,prepatch等等.
它说,该命令按照工作文档semver.inc的功能.

这些pre命令我有一个问题.

说我目前正在版本v1.0.0.
如果我运行npm version prerelease它会将版本提升到v1.0.1-0.

是否可以根据https://github.com/npm/node-semver#prerelease-identifiers为预发布标识符提供额外的agrument ?

我希望有类似的东西npm version prerelease alpha会碰到版本,v1.0.1-alpha.0但这不起作用.

versioning npm semantic-versioning npm-cli

16
推荐指数
3
解决办法
5559
查看次数

REST apis的语义版本控制?

我已经为REST apis(header,url,...)评估了许多版本控制模式.到目前为止,最可靠的方法似乎是url选项:它适用于代理,并且不依赖于模糊日期等模糊模式.

现在,当我环顾四周,大家谁使用基于URL的方法似乎使用的版本,如v1,v2等.没有人使用次要版本,甚至是语义版本控制等模式.

这提出了一些问题:

  • 什么时候增加REST api的版本号(当然,你有更多的更新,而不是五年一次)?
  • 如果您只是修复了错误,可能不会增加版本号,但是如何区分这两个版本?
  • 如果您使用非常细粒度的方法,最终会需要并行托管的许多版本.你怎么处理?

换句话说:像GitHub这样的公司,v3如今只有今天(2015年),现在已经有7年了?这是否意味着他们实际上只改变了他们的api两次?我简直不敢相信.

任何提示?

versioning api rest semantic-versioning

14
推荐指数
1
解决办法
4902
查看次数

如何在npm上安装最新的小版本软件包?

例如:

  • 我有版本2.0.0package-name安装.
  • 具有相同主要版本的最新次要版本是 2.1.2
  • 最新的主要版本(如果我运行将安装npm install package-name@latest4.3.0

如何安装没有重大更改的最新软件包?

npm semantic-versioning

13
推荐指数
4
解决办法
6838
查看次数

semver 的正则表达式

什么是匹配语义版本控制的正确正则表达式?

例如,它不应该匹配

01.1.1
9.8.7-whatever+meta+meta
1.2.3.DEV
1.2.3-0123
1.0.0-alpha_beta
1.2-SNAPSHOT
1.2.31.2.3----RC-SNAPSHOT.12.09.1--..12+788
Run Code Online (Sandbox Code Playgroud)

例如它应该匹配

0.0.4
1.2.3
10.20.30
1.1.2-prerelease+meta
1.1.2+meta
1.0.0-alpha
1.0.0-alpha.beta
1.0.0-alpha.1
1.0.0-alpha.0valid
1.0.0-rc.1+build.1
1.2.3-beta
10.2.3-DEV-SNAPSHOT
1.2.3-SNAPSHOT-123
1.0.0
2.0.0+build.1848
2.0.1-alpha.1227
1.0.0-alpha+beta
1.2.3----RC-SNAPSHOT.12.9.1--.12+788
1.2.3----R-S.12.9.1--.12+meta
Run Code Online (Sandbox Code Playgroud)

regex semantic-versioning

13
推荐指数
1
解决办法
1万
查看次数

对于非API软件,是否存在等效的语义版本控制方案?

我非常喜欢语义版本控制方案,但它实际上只对API有意义,因为重点是突破变化和向后兼容性.对于非API,例如最终用户软件,许多规则不再有意义.例如,向后兼容的概念并不意味着什么; 用户体验新功能,或者他们没有,更少的错误或他们没有,等等.然而,我会受益于xyz版本化的明确方案,遵循语义版本控制的精神,以便用户可以有一些想法会有什么期望如果他们熟悉该计划,请从新版本号码中获取.

我试着草绘如下的东西:

  • 如果对代码进行内部更改(例如错误修复,重构),则不会改变用户体验.可能包含新的"内部"功能.
  • 如果添加的功能可以将用户体验更改为当前功能的错误修复.
  • 颠簸x ...... ???用户体验发生了根本不同的变化?根本不同的是什么?
  • 初始alpha开发发生为0.0.z
  • 第一个beta测试版本设置为0.1.0并保持为0.yz
  • 第一个用户版本设置为1.0.0

另一个想法是,当某些用户可能依赖它们时删除的功能会产生x凸起,但在某些情况下这似乎是不合理的.(假设您了解所有用户,他们都希望删除一个非常小的功能.从1.0到2.0会有点违反直觉.)

这比语义版本更主观,因为客观地识别向后兼容的功能和破坏API的功能要容易得多.是否有任何"标准化"的版本控制方案,我可以探索更多的指导?

semantic-versioning

12
推荐指数
2
解决办法
936
查看次数

究竟什么被认为是图书馆箱子的重大改变?

Rust crates使用语义版本控制.因此,每个具有突破性更改的版本都会导致主要版本的崩溃.一个重大更改通常被认为的东西,可能会破坏下游板条箱(代码依赖于问题的库).

然而,在Rust中,很多都有可能打破下游板条箱.例如,更改(包括仅添加)公共符号集可能是一个重大变化,因为下游包可以使用glob-imports(use foo::*;)将我们库的符号拉入其命名空间.因此,添加符号也可以打破依赖的条件箱; 看这个例子.

同样,更改(添加或更改版本)我们的依赖项集可能会破坏下游构建.您还可以想象下游包依赖于我们的一种公共类型的特定大小.如果有的话,这很少有用; 我只是想表明:如果只有下游的箱子足够努力,一切都可能是一个突破性的变化.

这有什么指导方针吗?究竟什么被认为是一个突破性的变化,什么不是(因为它被认为是"用户的错")?

rust semantic-versioning rust-cargo

12
推荐指数
1
解决办法
851
查看次数

凉亭注册新版本

我向凉亭注册了一个版本的"angular-backstrech-adrr":

bower register angular-backstrech-adrr git@github.com:AladdinMhaimeed/angular-backstrech-adrr.git

这是bower.json:

{
  "author": "Aladdin Mhaimeed",
  "name": "angular-backstrech-adrr",
  "version": "1.0.4",
  "main": "angular-backstretch.js",
  "dependencies": {
          "jquery": ">2.0.0",
          "jquery-backstretch": "https://raw.github.com/srobbin/jquery-backstretch/master/jquery.backstretch.min.js"
  }
Run Code Online (Sandbox Code Playgroud)

}

Bower说它已经成功注册,但是当我使用时:

bower info angular-backstretch-adrr 
Run Code Online (Sandbox Code Playgroud)

它说没有可用的版本.

如果我更改版本并尝试再次注册,我会得到:EDUPLICATE

bower.json有什么问题吗?语法有什么问题吗?

semantic-versioning bower bower-register

11
推荐指数
2
解决办法
5180
查看次数