如何使用"cargo yank"?

How to use "cargo yank"?

我发布了我的 crate,然后意识到我忘记在我的 README.md 中包含一些小细节。我已将该细节包含在 README.md 中,并做了 git commitpush。如何在不更改版本的情况下更新我的箱子?

来自 the crates.io documentation:

cargo yank

Occasions may arise where you publish a version of a crate that actually ends up being broken for one reason or another (syntax error, forgot to include a file, etc.). For situations such as this, Cargo supports a yank of a version of a crate.

$ cargo yank --vers 1.0.1 

$ cargo yank --vers 1.0.1 --undo

我不明白如何使用它。为什么有 2 个命令:一个有另一个没有 --undo?我应该 运行 他们两个吗?还是只有一个?哪个?

之后我应该运行 crate package && crate publish吗?或者只有 cargo yank ...?这会自动更新我的箱子吗?

不能在不发布新版本的情况下更新您的 crate。 crate 存储库经过明确设计,因此 crate 是不可变的:一旦发布,它们就永远不会改变,period.

Yanking 适用于已发布的 crate 存在一些严重问题,例如严重的安全漏洞,或可能损坏用户数据,或者是的,因为它直接不起作用。这是一个信号,表明没有人 应该出于任何原因使用那个版本的板条箱。不完整的 README.md 并不真正符合该标准。

只发布一个新版本,或者等到您出于其他原因发布新版本时才发布。


至于为什么有两个命令:因为一个是yank一个版本,另一个是un-yank。 Un-yanking 与 publishing 不同,它只是恢复被 yanked 的箱子,就好像它从来没有被 yanked 一样。