问题:如何在 Cargo.toml 的依赖项中指定某个提交?

我正在尝试使用 GitHub 中的外部依赖项配置我的 Rust 项目。不幸的是,最近的一些提交对接口进行了一些更改,因此我无法使用最新版本。开发人员也不关心不同版本的标签和单独的分支,所以我认为唯一正确的方法是以某种方式指定某个提交,以便接口适合我使用的内容。

我现在在Cargo.toml中拥有的是:

[dependencies]
...
thelib = { git = 'https://github.com/someguys/thelib' }

我看到可以像这样指定一个分支:

thelib = { git = 'https://github.com/someguys/thelib', branch = 'branch1' }

但是我还没有看到一个带有提交的工作示例。有人可以在这里提供一个吗?

解答

正如 Cargo 指南的Cargo.toml vs Cargo.lock部分所暗示的,您可以使用rev属性来指定提交哈希:

[...] 如果你今天构建这个包,然后你给我发一份副本,我明天构建这个包,可能会发生一些不好的事情。与此同时,rand 可能会有更多的提交,而我的构建将包含新的提交,而你的则不会。因此,我们会得到不同的构建。这会很糟糕,因为我们想要可重现的构建。

我们可以通过在 Cargo.toml 中添加 rev 行来解决这个问题:

[依赖项]

rand u003d { git u003d "https://github.com/rust-lang-nursery/rand.git", rev u003d "9f35b8e" }

在指定依赖关系中也提到了它,尽管没有给出示例(强调我的):

由于我们没有指定任何其他信息,Cargo 假设我们打算使用master分支上的最新提交来构建我们的包。您可以将 git 键与revtagbranch键组合以指定其他内容。 [...]

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐