`git gc` says "unable to read" but `git fsck` happy
- From
- Stefan Monnier <monnier@iro.umontreal.ca>
- Date
- Mar 29, 2023, 22:05 UTC
- Message-ID
- <jwvfs9nusjm.fsf-monnier+Inbox@gnu.org>
Here's an example session:
% LANG=C git fsck --strict; LANG=C git gc
Checking object directories: 100% (256/256), done.
error in tree 2699d230e3b592ae42506d7b5c969a7ac6a4593c: zeroPaddedFilemode: contains zero-padded file modes
Checking objects: 100% (462555/462555), done.
Verifying commits in commit graph: 100% (117904/117904), done.
Enumerating objects: 462573, done.
Counting objects: 100% (462573/462573), done.
Delta compression using up to 8 threads
Compressing objects: 100% (155363/155363), done.
fatal: unable to read f5e44b38fc8f7e15e5e6718090d05b09912254fa
fatal: failed to run repack
%How come it can't read `f5e44b38fc8f7e15e5e6718090d05b09912254fa` during "repack" while `git fsck` says everything is fine?
More importantly: how do I diagnose this further and fix it?
Rumors on the net suggest that `git gc --aggressive` may circumvent this problem occasionally, but those don't seem to know what they're talking about, and in my case it didn't make any difference (except that it takes more time :-).
Stefan