Underscore: repositorio falla git fsck

Creado en 31 oct. 2020  ·  5Comentarios  ·  Fuente: 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 comentarios

@zackschuster Gracias por comunicarte.

Tuve que buscar en línea más información, porque nunca antes había oído hablar de git fsck o de este error en particular. Finalmente encontré en https://github.com/pallets/flask/issues/2029 que hay dos posibles soluciones para este tipo de problema. El primero realmente resuelve el problema al reconstruir el repositorio, pero es demasiado destructivo porque todos los hash después del objeto defectuoso cambiarían. El segundo equivale a agregar algo de documentación para advertir a las personas sobre el problema e instruirles sobre cómo solucionarlo (lo que parece perfectamente factible). Solo la última solución sería viable para este repositorio.

Sin embargo, todo esto me parece un poco discutible porque no puedo reproducir el error. Intenté ejecutar los comandos exactos de la publicación de apertura usando Git 2.26.2, excepto con sudo delante del primer comando, ya que esto es necesario para cambiar la configuración de todo el sistema. El repositorio se acaba de clonar sin errores. Tampoco pude encontrar ningún objeto con el hash b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3.

@zackschuster Por favor, verifique que el problema con el que se encontró no sea el resultado de una transferencia de red defectuosa, una lectura de disco defectuosa o un error en alguna versión particular de Git. Cerraré este tema ahora; si encuentra pasos adicionales que puedo realizar para reproducir el error después de todo, o si alguien más puede confirmar que esto es realmente un problema con el repositorio de Underscore, por supuesto lo volveremos a abrir.

@jgonggrijp Estoy usando git 2.29.2 en macOS, compilado de la forma estándar con autoconf & make. disculpas por el error en el comando de la consola; Sinceramente, tengo Receive.fsckObjects establecido desde $HOME/.gitconfig .

No estoy seguro de cómo rastrear errores de blob por mi parte, pero intentaré obtener más detalles: sonrisa:

@jgonggrijp encontré algo de información. de nota:

  1. ejecutar git clone --config transfer.fsckobjects=false [email protected]:jashkenas/underscore.git evita el error (tenga en cuenta el transfer.fsckobjects ; tenía la configuración incorrecta en mi informe original. ¡Disculpas!)
  2. posteriormente, ejecutar git fsck en el repositorio (usando v2.29.2 ) revela dos errores zeroPaddedFilemode
  3. git cat-file -p muestra una lista de archivos, lo que sugiere que son malas confirmaciones; git cat-file -t marca como tipo tree . git show output es una versión menos informativa de git cat-file -p . git log no devuelve nada.

He incluido la salida de la consola como referencia:

~/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
$ 

Ahora puedo reproducir el problema. Gracias por perseverar, @zackschuster.

Así que probablemente deberíamos simplemente documentar el hecho de que existe este problema y explicar cómo las personas pueden solucionarlo. Quizás un CLONING.md sería un lugar apropiado para dicha documentación.

O tal vez podamos averiguar de alguna manera qué confirmaciones hacen referencia a este árbol. Si tenemos mucha suerte, es posible que solo sea en alguna rama lateral sin importancia que podamos eliminar (o reconstruir). Probablemente deberíamos intentar esto primero.

Ayuda bienvenida.

Intenté usar git fast-export + git fast-import (usando esta respuesta SO ) y eso solucionó el repositorio, pero alteró los hash. flask enumera sus instrucciones zeroPaddedFilemode bajo contribución , por lo que copiar su texto en CONTRIBUTING.md podría ser una opción.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

jdalton picture jdalton  ·  6Comentarios

marcalj picture marcalj  ·  5Comentarios

jezen picture jezen  ·  8Comentarios

jdalton picture jdalton  ·  4Comentarios

clouddueling picture clouddueling  ·  3Comentarios