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

时间:2019-01-15 10:18:39

标签: github rust rust-cargo

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:5)

如《货运指南》的Cargo.toml vs Cargo.lock部分所述,您可以使用rev属性指定提交哈希:

  

[...]如果您今天构建此程序包,然后将副本发送给我,而我明天构建此程序包,则可能会发生某些不良情况。同时,可能会有更多的rand提交,而我的构建将包括新的提交,而您的不包括。因此,我们将获得不同的版本。这很糟糕,因为我们想要可复制的版本。

     

我们可以通过在我们的Cargo.toml中放置转行来解决此问题:

[dependencies]
rand = { git = "https://github.com/rust-lang-nursery/rand.git", rev = "9f35b8e" }

Specifying dependencies中也提到了它,尽管没有给出示例(强调我的意思):

  

由于我们未指定任何其他信息,因此Cargo假设我们打算使用master分支上的最新提交来构建我们的程序包。您可以使用revtagbranch键组合git键以指定其他内容。这是一个指定您要在名为next的分支上使用最新提交的示例:

答案 1 :(得分:4)

您可以使用 rev 键指定提交哈希。例如:

thelib = { git = "https://github.com/someguys/thelib", rev = "9f35b8e" }

this section of the Cargo book中已简要提及。