2017-09-22 93 views
4

我想仔细发布一个新版本的箱子,让用户有机会先测试它。我如何才能将它作为“测试版”发布到crates.io? (类似于npm如何标记版本@next)。如何发布有限公众测试的测试版测试版?

这不应该是一个突破性的改变,所以我不打算增加semver-major版本。我不希望在用户执行cargo upgrade之前自动选择它,直到Beta测试期结束。

  • 该版本应该使用哪种版本的语法?

  • 发布时是否需要使用任何特殊货物?如何使用cargo/Cargo.toml加入beta版?

回答

8

Semantic versioning限定pre-release version的概念:

预发布版本可以通过附加一个连字符和一系列点的分隔的标识符的补丁版本紧接着表示。标识符必须只包含ASCII字母数字和连字符[0-9A-Za-z-]。标识符不能为空。数字标识符不能包含前导零。预发布版本的优先级低于关联的普通版本。预发布版本表示版本不稳定,可能无法满足其相关正常版本所表示的预期兼容性要求。例子:1.0.0-α,1.0.0-alpha.1,1.0.0-0.3.7,1.0.0-x.7.z.92

要在货物使用,发布一个箱子的计划版本号,但附加了预发布标识符。我建议-beta.0,允许如果需要第二个您能够轻松增加:

[dependencies] 
library = "0.1.1-beta" 

[package] 
name = "library" 
version = "0.1.1-beta.0" 

,你需要通过把beta入版本要求专门选择到它要使用此

要测试这个,我:

  1. 打开本地crates.io服务器
  2. 上传箱子与版本0.1.0
  3. 在二进制项目中使用library = "0.1.0"应用 - 它解析为0.1.0
  4. 上传箱子与版本0.1.1-beta.0
  5. cargo update in app - 版本没有更改。
  6. 应用改为library = "0.1.1-beta",跑cargo update - 版本变化。
  7. 上传箱子与版本0.1.1-beta.1
  8. 应用cargo update - 版本变化。
+0

梦幻般的答案。谢谢。 – Kornel