git fsck: check pack rev-index files
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest4 patches 14 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/4 | fsck: create scaffolding for rev-index checksbuiltin/ pack-revindex.c pack-revindex.h +1 more | +63 | 1 reply | |
| 2/4 | fsck: check rev-index checksumspack-revindex.c t/ | +50 | 7 replies | |
| 3/4 | fsck: check rev-index position valuespack-revindex.c t/ | +26 | 3 replies | |
| 4/4 | fsck: validate .rev file headerbuiltin/ pack-bitmap.c pack-revindex.c +2 more | +36 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [PATCH 0/4] git fsck: check pack rev-index files
This series is based on tb/pack-revindex-on-disk.
The git fsck builtin does not look at the .rev files that pair with .pack and .idx files, but should. If these files suffer a bit flip on disk, then the invalid data may cause fetches and clones from that repository to start failing. The fix is simple: delete the .rev file (and regenerate, if necessary), but detection is the first step.
This series adds those checks. The initial check to verify the checksum is probably sufficient for most real-world scenarios, but going the extra mile to verify the rev-index contents against an in-memory rev-index helps us be sure that there isn't a bug in the rev-index writing code of Git (which would result in a valid checksum). Much like other file formats, an invalid header needs to be handled separately as a malformed header may prevent the data structures from being initialized in the first place.
This series does not validate a multi-pack-index-<hash>.rev file or the rev-index chunk of a multi-pack-index file. These could be fast-follows, except that there is no existing equivalent for an in-memory rev-index for easy comparison. The rev-index chunk (which is the most-common way for a multi-pack-index to have this information) is already covered by existing checksum validation, at least.
Thanks, -Stolee
Derrick Stolee (4):
fsck: create scaffolding for rev-index checks
fsck: check rev-index checksums
fsck: check rev-index position values
fsck: validate .rev file header
builtin/fsck.c | 36 +++++++++++++++++++ pack-bitmap.c | 4 +-- pack-revindex.c | 43 +++++++++++++++++++++-- pack-revindex.h | 16 +++++++++ t/t5325-reverse-index.sh | 74 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 169 insertions(+), 4 deletions(-)
base-commit: 9f7f10a282d8adeb9da0990aa0eb2adf93a47ca7
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1512%2Fderrickstolee%2Ffsck-rev-indexes-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1512/derrickstolee/fsck-rev-indexes-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1512
Signature · 1 line
gitgitgadget