repro:
$ git config --system receive.fsckObjects true
$ git clone [email protected]:jashkenas/underscore.git # or `git submodule add -- [email protected]:jashkenas/underscore.git`
Cloning into 'underscore'...
remote: Enumerating objects: 215, done.
remote: Counting objects: 100% (215/215), done.
remote: Compressing objects: 100% (130/130), done.
error: object b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3: zeroPaddedFilemode: contains zero-padded file modes
fatal: fsck error in packed object
@zackschuster Obrigado por
Tive que procurar mais informações online, porque nunca tinha ouvido falar sobre git fsck ou esse erro específico antes. Acabei descobrindo em https://github.com/pallets/flask/issues/2029 que existem duas soluções possíveis para esse tipo de problema. O primeiro realmente resolve o problema reconstruindo o repositório, mas é muito destrutivo porque todos os hashes após o objeto defeituoso mudariam. A segunda consiste em adicionar alguma documentação para alertar as pessoas sobre o problema e instruí-las sobre como contorná-lo (o que parece perfeitamente factível). Apenas a última solução seria viável para este repo.
Tudo isso parece um pouco discutível para mim, porque não consigo reproduzir o erro. Tentei executar os comandos exatos da postagem de abertura usando Git 2.26.2, exceto com sudo
na frente do primeiro comando, pois isso é necessário para alterar as configurações de todo o sistema. O repo foi clonado sem erros. Também não consegui encontrar nenhum objeto com o hash b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3.
@zackschuster Verifique
@jgonggrijp estou usando o git 2.29.2 no macOS, compilado da maneira padrão com autoconf e make. desculpas pelo erro no comando do console; na verdade, eu tenho receive.fsckObjects definido a partir de $HOME/.gitconfig
.
Não tenho certeza de como rastrear erros de blob no meu terminal, mas tentarei obter mais detalhes: sorriso:
@jgonggrijp encontrei algumas informações. de importância:
git clone --config transfer.fsckobjects=false [email protected]:jashkenas/underscore.git
evita o erro (observe o transfer.fsckobjects
; eu usei a configuração errada em meu relatório original. desculpas!)git fsck
no repo (usando v2.29.2
) revela dois erros zeroPaddedFilemodegit cat-file -p
mostra uma lista de arquivos, o que sugere que são commits ruins; git cat-file -t
marca como tipo tree
. git show
saída de git cat-file -p
. git log
não retorna nada.Eu incluí a saída do console para referência:
~/Source
$ git clone --config transfer.fsckobjects=false [email protected]:jashkenas/underscore.git
Cloning into 'underscore'...
remote: Enumerating objects: 215, done.
remote: Counting objects: 100% (215/215), done.
remote: Compressing objects: 100% (130/130), done.
remote: Total 10434 (delta 185), reused 101 (delta 85), pack-reused 10219
Receiving objects: 100% (10434/10434), 5.61 MiB | 9.21 MiB/s, done.
Resolving deltas: 100% (6770/6770), done.
~/Source
$ cd underscore
~/Source/underscore
$ git fsck
Checking object directories: 100% (256/256), done.
warning in tree b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3: zeroPaddedFilemode: contains zero-padded file modes
warning in tree 8a654ec549a230dcab28e54c6e53c460cb9e190d: zeroPaddedFilemode: contains zero-padded file modes
Checking objects: 100% (10434/10434), done.
~/Source/underscore
$ git cat-file -p b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3
100644 blob d8cef485ec7309b938b4c3bc19171458e9139811 LICENSE
100644 blob 333b13f45b62427fd0840c77bb55bfc8fb96be6b README
100644 blob 721c294b3ddb1d3e6ed35a7d9336e162aab01bb9 Rakefile
100644 blob bdaef73ca2ca82b90d37cec4b9c38606b440d619 index.html
100644 blob 6771de07ecd088853df1376f3693e81584ec2560 package.json
040000 tree d0a277f748b309f3d26e13d1cb5133ff003c468d test
100644 blob 7cfbf993705f83e7fde17e9745b4187f7a4047b2 underscore-min.js
100644 blob 625411233e487b5cd8da1a32a69e5693b1862c09 underscore.js
~/Source/underscore
$ git cat-file -p 8a654ec549a230dcab28e54c6e53c460cb9e190d
100644 blob 9644b34c3f5c16753d1061497aa7aab426e6c896 LICENSE
100644 blob e41015cd7cc04a940ac4e7a451aeb0b0b384c3a3 README
100644 blob 6af14bb6d570698990d30aa0b46e398ae3fd48b1 Rakefile
100644 blob 1a03be19fc8ddf61b113f71c19d6892fb74ff4f5 index.html
100644 blob 2cbc8128d9db1feabc44a3be14c504e40b6b7e2e package.json
040000 tree fae9dcb01827d13b2b5fbd9afab07489b249dab8 test
100644 blob 2c8b499882c2a5d662ea35c80ec7ea0fa111814f underscore-min.js
100644 blob 42bf31a27545d0d5460c655d13ce9bbf76e540b3 underscore.js
~/Source/underscore
$ git cat-file -t b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3
tree
~/Source/underscore
$ git cat-file -t 8a654ec549a230dcab28e54c6e53c460cb9e190d
tree
~/Source/underscore
$ git show b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3
tree b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3
LICENSE
README
Rakefile
index.html
package.json
test/
underscore-min.js
underscore.js
~/Source/underscore
$ git show 8a654ec549a230dcab28e54c6e53c460cb9e190d
tree 8a654ec549a230dcab28e54c6e53c460cb9e190d
LICENSE
README
Rakefile
index.html
package.json
test/
underscore-min.js
underscore.js
~/Source/underscore
$ git log b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3
~/Source/underscore
$ git log 8a654ec549a230dcab28e54c6e53c460cb9e190d
~/Source/underscore
$
Agora posso reproduzir o problema. Obrigado por perseverar, @zackschuster.
Portanto, provavelmente devemos apenas documentar o fato de que esse problema existe e explicar como as pessoas podem contorná-lo. Talvez CLONING.md
seja um local apropriado para tal documentação.
Ou talvez possamos descobrir quais commits fazem referência a esta árvore. Se tivermos muita sorte, pode ser apenas em algum branch secundário sem importância que podemos excluir (ou reconstruir). Provavelmente deveríamos tentar isso primeiro.
Ajuda bem-vinda.
Eu tentei usar git fast-export
+ git fast-import
(usando esta resposta SO ) e isso consertou o repo, mas alterou os hashes. flask lista suas instruções zeroPaddedFilemode em contribuição , então copiar seu texto para CONTRIBUTING.md
pode ser uma opção.