如何发布用于有限 public 测试的 crate 测试版?

How to release a beta version of a crate for limited public testing?

我想谨慎发布一个新版本的箱子,让用户有机会先测试它。我怎样才能将它作为 "beta" 发布到 crates.io? (类似于 npm 如何 @next 标记发布)。

这不应该是重大更改,所以我不会增加 semver-major 版本。在 Beta 测试期结束之前,我不希望当用户 cargo upgrade 时自动选择它。

Semantic versioning defines the concept of a pre-release version:

A pre-release version MAY be denoted by appending a hyphen and a series of dot separated identifiers immediately following the patch version. Identifiers MUST comprise only ASCII alphanumerics and hyphen [0-9A-Za-z-]. Identifiers MUST NOT be empty. Numeric identifiers MUST NOT include leading zeroes. Pre-release versions have a lower precedence than the associated normal version. A pre-release version indicates that the version is unstable and might not satisfy the intended compatibility requirements as denoted by its associated normal version. Examples: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92

要在 Cargo 中使用它,请发布一个包含计划版本号的包,但附加一个预发布标识符。我建议-beta.0,如果你需要第二个,让你轻松增加:

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

要使用它,您需要通过将 beta 放入版本要求来明确选择加入它:

[dependencies]
library = "0.1.1-beta"

为了测试这个,我:

  1. 启动本地 crates.io 服务器
  2. 上传了 crate library 版本 0.1.0
  3. 在二进制项目中使用 library = "0.1.0" app — 它解析为 0.1.0
  4. 上传了 crate library 版本 0.1.1-beta.0
  5. 运行 cargo updateapp — 版本 没有 改变。
  6. app 中更改为 library = "0.1.1-beta",运行 cargo update — 版本 did 更改.
  7. 上传了 crate library 版本 0.1.1-beta.1
  8. 运行 cargo updateapp — 版本 did 改变了。