Rust Cargo是否使用带Git标签的semver?

Rust Cargo是否使用带Git标签的semver?,rust,rust-cargo,Rust,Rust Cargo,我的印象是没有,但我找不到任何关于这方面的具体文件。Cargo对Git repos上semver兼容标签的处理方式是否与对crates.io上板条箱的处理方式相同,即Cargo update将板条箱更新为最新的非破损版本 更具体地说,给定以下Cargo.toml代码段,并假设板条箱的最新版本为1.0.1,git_板条箱存在1.0.1标签,将下载板条箱的1.0.1版本。cargo install是否也会获取git_板条箱的1.0.1标签,还是会使用1.0.0标签 [dependencies] cr

我的印象是没有,但我找不到任何关于这方面的具体文件。Cargo对Git repos上semver兼容标签的处理方式是否与对crates.io上板条箱的处理方式相同,即Cargo update将板条箱更新为最新的非破损版本

更具体地说,给定以下Cargo.toml代码段,并假设板条箱的最新版本为1.0.1,git_板条箱存在1.0.1标签,将下载板条箱的1.0.1版本。cargo install是否也会获取git_板条箱的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将选择您指定的确切标签。您可以通过使用git守护进程在默认情况下在临时端口9418上支持repo,然后添加git repo及其标记来说服自己。当端口启动且守护进程可用但没有有效的git repo时,您将看到以下情况:

Caused by:
  Unable to update http://localhost:9418/?tag=1.0.0
因此,确认cargo所做的唯一事情就是获得您提到的准确标签。这再次完全是意料之中的事