gpt4 book ai didi

rust - Cargo 是否将 semver 与 Git 标签一起使用?

转载 作者:行者123 更新时间:2023-11-29 08:28:15 25 4
gpt4 key购买 nike

我的印象是它没有,但我找不到这方面的任何具体文档。 Cargo 是否像对待 crates.io 上的 crates 一样对待 Git repos 上符合 semver 的标签,即 cargo update 将 crate 更新到最新的非破坏版本?

更具体地说,给定以下 Cargo.toml 片段并假设最新版本的“crate”是 1.0.1 并且“git_crate”存在 1.0.1 标签,则 1.0.1 版本的“crate”将被下载。 cargo install 是否也会为“git_crate”获取 1.0.1 标签,还是会使用 1.0.0 标签?

[dependencies]
crate = "1.0.0"
git_crate = { git = "https://git@example.com/git_crate.git", tag = "1.0.0" }

最佳答案

Git 标签是自由形式的;例如,完全有可能将您的提交标记为 foobar 并且没有人会眨眼。 Semver 是人们用于标签的常见趋势;然而,这甚至是一个常数吗?有些人使用 x.y.z,其他人使用 vx.y.z

因此,cargo 将选择您指定的 exact 标签。您可以通过使用 git daemon 在临时端口(默认为 9418)上支持您的 repo,然后添加 git repo 及其标签来说服自己。当端口启动并且守护程序可用(但没有有效的 git 存储库)时,您将看到以下内容:

Caused by:
Unable to update http://localhost:9418/?tag=1.0.0

因此确认 cargo 所做的唯一一件事就是获得您提到的确切标签。这再次完全符合预期。

关于rust - Cargo 是否将 semver 与 Git 标签一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58439739/

25 4 0