Underscore: repo falha git fsck

Criado em 31 out. 2020  ·  5Comentários  ·  Fonte: jashkenas/underscore

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
bug

Todos 5 comentários

@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:

  1. executar 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!)
  2. subsequentemente, a execução de git fsck no repo (usando v2.29.2 ) revela dois erros zeroPaddedFilemode
  3. git 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.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

jdalton picture jdalton  ·  4Comentários

danilopolani picture danilopolani  ·  5Comentários

clouddueling picture clouddueling  ·  3Comentários

xiaoliwang picture xiaoliwang  ·  3Comentários

haggholm picture haggholm  ·  8Comentários