如何在 Cargo.toml 的依赖项中指定某个提交?
问题:如何在 Cargo.toml 的依赖项中指定某个提交? 我正在尝试使用 GitHub 中的外部依赖项配置我的 Rust 项目。不幸的是,最近的一些提交对接口进行了一些更改,因此我无法使用最新版本。开发人员也不关心不同版本的标签和单独的分支,所以我认为唯一正确的方法是以某种方式指定某个提交,以便接口适合我使用的内容。 我现在在Cargo.toml中拥有的是: [dependencies] ..
问题:如何在 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 键与rev
、tag
或branch
键组合以指定其他内容。 [...]
更多推荐
所有评论(0)