4

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

文档crates.io

cargo yank

有时可能会出现您发布的 crate 版本实际上最终由于某种原因(语法错误、忘记包含文件等)而被破坏的情况。对于这样的情况,Cargo 支持yank一个 crate 版本。

$ cargo yank --vers 1.0.1 

$ cargo yank --vers 1.0.1 --undo

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

我应该crate package && crate publish在那之后跑吗?还是只有cargo yank ...?这会自动更新我的箱子吗?

4

1 回答 1

8

如果不发布新版本,您将无法更新您的 crate。crate 存储库经过明确设计,使得 crate 是不可变的:一旦发布,它们就永远不会改变

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

只需发布一个新版本,或者推迟到您出于其他原因发布新版本。


至于为什么有两个命令:一个是 yanks 一个版本,另一个是 un-yanks。取消拉动与发布不同,它只是恢复被拉动的板条箱,就好像它从来没有被拉动过一样。

于 2017-05-16T05:16:57.057 回答