Underscore: Repo schlägt fehl git fsck

Erstellt am 31. Okt. 2020  ·  5Kommentare  ·  Quelle: 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

Alle 5 Kommentare

@zackschuster Danke, dass

Ich musste online nach weiteren Informationen suchen, da ich noch nie von git fsck oder diesem speziellen Fehler gehört hatte. Ich fand schließlich in https://github.com/pallets/flask/issues/2029, dass es zwei mögliche Lösungen für diese Art von Problem gibt. Der erste löst das Problem wirklich durch Neuerstellen des Repositorys, ist jedoch zu destruktiv, da sich alle Hashes nach dem fehlerhaften Objekt ändern würden. Die zweite besteht darin, einige Dokumentationen hinzuzufügen, um die Leute vor dem Problem zu warnen und sie anzuweisen, wie sie es umgehen sollen (was vollkommen machbar erscheint). Nur die letztere Lösung wäre für dieses Repo realisierbar.

All dies scheint mir jedoch ein wenig umstritten zu sein, da ich den Fehler nicht reproduzieren kann. Ich habe versucht, die genauen Befehle aus dem Eröffnungsbeitrag mit Git 2.26.2 auszuführen, außer mit sudo vor dem ersten Befehl, da dies erforderlich ist, um die systemweiten Einstellungen zu ändern. Das Repo wurde einfach fehlerfrei geklont. Ich konnte auch kein Objekt mit dem Hash b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3 finden.

@zackschuster Bitte überprüfen Sie noch einmal, ob das Problem, auf das Sie

@jgonggrijp Ich verwende Git 2.29.2 unter MacOS, das auf standardmäßige Weise mit Autoconf & Make kompiliert wurde. Entschuldigung für den Fehler im Konsolenbefehl; Ehrlich gesagt habe ich receive.fsckObjects von $HOME/.gitconfig .

Ich bin mir nicht sicher, wie ich Blob-Fehler an meinem Ende aufspüren soll, aber ich werde versuchen, mehr Details zu erfahren: smile:

@jgonggrijp Ich habe einige Informationen gefunden. Bemerkenswert:

  1. Das Ausführen von git clone --config transfer.fsckobjects=false [email protected]:jashkenas/underscore.git vermeidet den Fehler (beachten Sie die transfer.fsckobjects ; ich hatte in meinem ursprünglichen Bericht die falsche Einstellung. Entschuldigung!)
  2. Anschließend werden beim Ausführen von git fsck im Repo (unter Verwendung von v2.29.2 ) zwei zeroPaddedFilemode-Fehler angezeigt
  3. git cat-file -p zeigt eine Liste von Dateien an, was darauf hindeutet, dass es sich um schlechte Commits handelt. git cat-file -t markiert sie als Typ tree . git show output ist eine weniger informative Version von git cat-file -p . git log gibt nichts zurück.

Ich habe die Konsolenausgabe als Referenz aufgenommen:

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

Ich kann das Problem jetzt reproduzieren. Danke fürs Durchhalten, @zackschuster.

Wir sollten also wahrscheinlich nur die Tatsache dokumentieren, dass dieses Problem besteht, und erklären, wie Menschen es umgehen können. Vielleicht wäre ein CLONING.md ein geeigneter Ort für eine solche Dokumentation.

Oder vielleicht können wir irgendwie herausfinden, welche Commits auf diesen Baum verweisen. Wenn wir sehr viel Glück haben, können wir möglicherweise nur einen unwichtigen Nebenzweig löschen (oder neu erstellen). Wir sollten das wahrscheinlich zuerst versuchen.

Hilfe willkommen.

Ich habe versucht, git fast-export + git fast-import (mit dieser SO-Antwort ) und das hat das Repo behoben, aber die Hashes geändert. flask listet die ZeroPaddedFilemode-Anweisungen unter "Beitragen" auf , daher kann das Kopieren des Textes in CONTRIBUTING.md eine Option sein.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

clouddueling picture clouddueling  ·  3Kommentare

dmaicher picture dmaicher  ·  9Kommentare

arieljake picture arieljake  ·  4Kommentare

haggholm picture haggholm  ·  8Kommentare

githublyp picture githublyp  ·  3Kommentare