2017-02-09 7 views
4

Cargo는 다운로드 한 상자의 소스 코드를 $HOME/.cargo/registry/src (또는 해당 $CARGO_HOME 디렉토리)에 저장합니다. 나는 내가 사용하는 각 고유 레지스트리가 아마도 충돌을 막기 위해 별도의 디렉토리를 만들게된다.왜 Cargo는 같은 레지스트리에 대해 여러 개의 디렉토리를 만들까요?

는 내가 이해하지 못하는 것은 같은 저장소가 여러 디렉토리를 만드는 이유입니다 :

$ 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

녹의 각 버전마다 하나의 디렉토리가 생성된다고 생각합니다. – kennytm

+0

@kennytm 그렇다면 3 가지가 아닌 15 가지 버전 (현재 1.15 안정 버전, 베타 버전, 야간 버전 및 1.0 버전 이전 버전)을 보유 할 것으로 기대됩니다. – Shepmaster

+1

흥미 롭습니다. 'cargo - update' [report] (https://github.com/nabijaczleweli/cargo-update/issues/15)는 때로는 가장 최신 것이 cargo에 의해 사용 된 것이 아니라는 것을 알려줍니다. –

답변

5

The hash is based on two fields : 원본 종류 (중앙 저장소, git 참조, 로컬 경로 등) 및 원본 URL.

rust-url의 구현을 HashUrl으로 위임하는 데 사용 된 카고입니다. 시간이 지남에 따라 변경되었습니다. 화물의 실행은 issue 1710을 고치기 위해 pull request 2737에서 마지막으로 변경되었습니다. Cargo는 rust-url의 동작에 의존하지 않는보다 안정적인 해시를 생성하기 위해 Url 개체가 아닌 URL 문자열을 해시합니다.

또한 해시 함수로 Cargo uses the now-deprecated SipHasher입니다. 더 이상 사용되지 않으므로 Cargo가 향후 다른 해시 함수로 변경 될 수도 있습니다 (또는 SipHasher이 상자로 이동할 수 있고 Cargo가이를 알고 있음).