Executar qualquer cargo add {crate}
falharia com:
Command failed due to unhandled error: reference 'refs/remotes/origin/master' not found; class=Reference (4); code=NotFound (-3)
Após alguma depuração, descobri que o índice de carga tinha seu 'refs / remotes / origin' definido como HEAD
vez de master
. Tentei reconstruir o índice executando rm -rf ~/.cargo/registry/index/github.com-*/
e, em seguida, cargo add <any dependency>
. Isso atualizou o índice, porém agora refs/remotes/origin/
ainda contém HEAD
vez de master
.
Descobriu que a linha em que falhou neste lib era: https://github.com/killercup/cargo-edit/blob/034f6efc6c9c86ce07a0ad01cfbb55198397e1ec/src/fetch.rs#L271
Confirmado que a execução de mv HEAD master
corrigiu temporariamente o problema.
Obrigado pelo relatório. Hmm, isso é estranho, não consigo reproduzir o problema. Você já tentou remover o índice e reconstruí-lo com cargo check
vez de cargo add
?
Isso é o que eu ganhei depois disso:
❯ tree ~/.cargo/registry/index/github.com-1ecc6299db9ec823/.git/refs/remotes/origin
~/.cargo/registry/index/github.com-1ecc6299db9ec823/.git/refs/remotes/origin
└── master
A atualização do índice é feita aqui:
https://github.com/killercup/cargo-edit/blob/034f6efc6c9c86ce07a0ad01cfbb55198397e1ec/src/fetch.rs#L126 -L159
De fato, falhou na verificação de carga também. Assim, reduzi a questão. Isso funciona como planejado no Estável, mas não à noite.
rustup show
Default host: x86_64-unknown-linux-gnu
rustup home: /home/vagrant/.rustup
installed toolchains
--------------------
stable-x86_64-unknown-linux-gnu
nightly-x86_64-unknown-linux-gnu (default)
active toolchain
----------------
nightly-x86_64-unknown-linux-gnu (default)
rustc 1.46.0-nightly (346aec9b0 2020-07-11)
Pode estar conectado a https://github.com/rust-lang/cargo/pull/8364
Estou enfrentando o mesmo problema em nightly
.
-bash-5.0$ cargo add clap
Command failed due to unhandled error: reference 'refs/remotes/origin/master' not found; class=Reference (4); code=NotFound (-3)
posso reverter cargo-edit
para uma versão anterior como uma solução temporária?
@kavirajk no. A solução temporária é renomear o arquivo em ~/.cargo/registry/index/github.com-*/.git/refs/remotes/origin
chamado HEAD
para master
Pensei em algumas correções. Uma delas seria permitir que cargo add
usasse qualquer uma das origens. Acho que sempre esperamos que isso tenha 1 arquivo nesse diretório.
+1, mesmo problema com OP, espero pela nova versão