Cargo将下载的包装箱的源代码存储在$HOME/.cargo/registry/src
(或相应的$CARGO_HOME
目录)中。我知道我使用的每个唯一的注册表都会创建一个单独的目录,大概是为了防止冲突。
我不明白为什么同一个存储库会创建多个目录:
$ ls -ld ~/.cargo/registry/src/github.com-*
drwxr-xr-x 473 shep staff 16082 Dec 27 2015 ~/.cargo/registry/src/github.com-0a35038f75765ae4
drwxr-xr-x 1187 shep staff 40358 Feb 8 19:10 ~/.cargo/registry/src/github.com-1ecc6299db9ec823
drwxr-xr-x 380 shep staff 12920 Sep 11 12:16 ~/.cargo/registry/src/github.com-88ac128001ac3a9a
据推测,附加到末尾的哈希在此中扮演了一些角色。是什么导致Cargo创建这些目录之一?它是否会回到之前的目录并继续使用它?
答案 0 :(得分:5)
The hash is based on two fields:源的类型(中央存储库,git引用,本地路径等)和源的URL。
货物曾用于委托执行Hash
的{{1}}的生锈网址,后者随着时间的推移而发生变化。货物的实施最后一次在pull request 2737中更改,以便修复issue 1710; Cargo现在散列URL字符串,而不是Url
对象,以便生成更稳定的散列,而不依赖于rust-url的行为。
此外,Cargo uses the now-deprecated SipHasher
作为哈希函数。因为它已被弃用,所以Cargo可能会在未来更改为另一个哈希函数(或者Url
可能会移动到箱子而货物将使用它,谁知道)。