O lockfile
O que ele trava, por que ele precisa ser LIDO, e as duas regras que decidem os empates.
O forge.lock guarda a versão exata e o sha256 de cada pacote. Ele é versionado, e a razão é uma só: duas pessoas clonando o mesmo projeto em dias diferentes têm de receber a mesma árvore.
| Comando | O que ele faz |
|---|---|
install | instala o que o lock fixa, enquanto couber na faixa do forge.toml |
update | resolve de novo dentro das faixas e reescreve o lock; com nomes, move só eles |
add | move só o que está sendo adicionado — o resto continua travado |
outdated | separa o que sobe com update do que exige mudar o forge.toml |
As duas regras dos empates#
| Regra | Porque |
|---|---|
| a faixa do `forge.toml` vence o lock | o manifesto é a intenção; o lock é a memória da última resolução. Quem sobe o requisito está pedindo outra versão |
| o sha256 do lock é comparado com o que chegou | um tarball trocado numa versão já publicada para a instalação, com a mensagem dizendo o que fazer. É o ataque que um lockfile existe para impedir |
O tarball é reprodutível#
mtime=0, uid e gid zerados. Sem isso o sha256 mudaria a cada empacotamento, a verificação de integridade não significaria nada — e, pior, pareceria significar.
bash
cd packages/validador
dataforge pack # o tarball, com sha256 estavel
dataforge pack && dataforge pack # o MESMO sha256 nas duas vezesContinue em O registro e Versão e compatibilidade.