Add 'git multi-pack-index verify' command
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v2 Latest11 patches 1 replyIn review
- v111 patches 9 repliesSuperseded
Patches in v2 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/11 | multi-pack-index: add 'verify' verbDocumentation/ builtin/ midx.c +2 more | +35 | 0 replies | |
| 2/11 | multi-pack-index: verify bad headermidx.c t/ | +51 | 0 replies | |
| 3/11 | multi-pack-index: verify corrupt chunk lookup tablemidx.c t/ | +16 | 0 replies | |
| 4/11 | multi-pack-index: verify packname ordermidx.c t/ | +12 | 0 replies | |
| 5/11 | multi-pack-index: verify missing packmidx.c t/ | +21 | 0 replies | |
| 6/11 | multi-pack-index: verify oid fanout ordermidx.c t/ | +17 | 0 replies | |
| 7/11 | multi-pack-index: verify oid lookup ordermidx.c t/ | +19 | 0 replies | |
| 8/11 | multi-pack-index: fix 32-bit vs 64-bit size checkmidx.c | +1 | 0 replies | |
| 9/11 | multi-pack-index: verify object offsetsmidx.c t/ | +55 | 0 replies | |
| 10/11 | multi-pack-index: report progress during 'verify'midx.c | +6 | 1 reply | |
| 11/11 | fsck: verify multi-pack-indexbuiltin/ t/ | +30 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v2 yet.
Cover letter [PATCH v2 00/11] Add 'git multi-pack-index verify' command
The multi-pack-index file provides faster lookups in repos with many packfiles by duplicating the information from multiple pack-indexes into a single file. This series allows us to verify a multi-pack-index using 'git multi-pack-index verify' and 'git fsck' (when core.multiPackIndex is true).
The pattern for the tests is similar to that found in t5318-commit-graph.sh.
During testing, I found a bug in how we check for the size of off_t (we are not actually checking off_t, but instead uint32_t). See "multi-pack-index:
fix 32-bit vs 64-bit size check".
Thanks to Ævar [1], I added a commit that provides progress updates when checking object offsets.
Based on ds/multi-pack-index
[1]
https://public-inbox.org/git/[email protected]/T/#u
Derrick Stolee (11):
multi-pack-index: add 'verify' verb
multi-pack-index: verify bad header
multi-pack-index: verify corrupt chunk lookup table
multi-pack-index: verify packname order
multi-pack-index: verify missing pack
multi-pack-index: verify oid fanout order
multi-pack-index: verify oid lookup order
multi-pack-index: fix 32-bit vs 64-bit size check
multi-pack-index: verify object offsets
multi-pack-index: report progress during 'verify'
fsck: verify multi-pack-index
Documentation/git-multi-pack-index.txt | 10 ++ builtin/fsck.c | 18 ++++ builtin/multi-pack-index.c | 4 +- midx.c | 113 ++++++++++++++++---- midx.h | 1 + t/t5319-multi-pack-index.sh | 136 ++++++++++++++++++++++++- 6 files changed, 262 insertions(+), 20 deletions(-)
base-commit: 6a22d521260f86dff8fe6f23ab329cebb62ba4f0
Published-As: https://github.com/gitgitgadget/git/releases/tags/pr-34%2Fderrickstolee%2Fmidx%2Fverify-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-34/derrickstolee/midx/verify-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/34
Range-diff vs v1:
1: 8dc38afe2b ! 1: d8ffd84d67 multi-pack-index: add 'verify' verb
@@ -47,7 +47,7 @@
static char const * const builtin_multi_pack_index_usage[] = {
- N_("git multi-pack-index [--object-dir=<dir>] write"),
-+ N_("git multi-pack-index [--object-dir=<dir>] [write|verify]"),
++ N_("git multi-pack-index [--object-dir=<dir>] (write|verify)"),
NULL
}; 2: 787e1fb616 ! 2: 9590895830 multi-pack-index: verify bad header
@@ -61,10 +61,10 @@
+# usage: corrupt_midx_and_verify <pos> <data> <objdir> <string>
+corrupt_midx_and_verify() {
-+ POS=$1
-+ DATA="${2:-\0}"
-+ OBJDIR=$3
-+ GREPSTR="$4"
++ POS=$1 &&
++ DATA="${2:-\0}" &&
++ OBJDIR=$3 &&
++ GREPSTR="$4" &&
+ FILE=$OBJDIR/pack/multi-pack-index &&
+ chmod a+w $FILE &&
+ test_when_finished mv midx-backup $FILE &&
3: b385aa2abf = 3: 2448173844 multi-pack-index: verify corrupt chunk lookup table
4: 37ee24c82b = 4: 947241bfdc multi-pack-index: verify packname order
5: b747da415c = 5: 4058867380 multi-pack-index: verify missing pack
6: 58e5c09468 = 6: ea1c522702 multi-pack-index: verify oid fanout order
7: b21772d054 = 7: 511791de91 multi-pack-index: verify oid lookup order
8: b08d3f0055 = 8: 210649bf83 multi-pack-index: fix 32-bit vs 64-bit size check
9: e1498aea45 ! 9: ef20193d59 multi-pack-index: verify object offsets
@@ -21,7 +21,8 @@
if (pack_int_id >= m->num_packs)
- BUG("bad pack-int-id");
-+ die(_("bad pack-int-id"));
++ die(_("bad pack-int-id: %u (%u total packs"),
++ pack_int_id, m->num_packs);
if (m->packs[pack_int_id])
return 0;
10: acf8cfd632 = 10: 29ebc17161 multi-pack-index: report progress during 'verify'
11: 09d16aff20 ! 11: 406c88b456 fsck: verify multi-pack-index
@@ -40,14 +40,14 @@
--- a/t/t5319-multi-pack-index.sh
+++ b/t/t5319-multi-pack-index.sh
@@
- DATA="${2:-\0}"
- OBJDIR=$3
- GREPSTR="$4"
-+ COMMAND="$5"
+ DATA="${2:-\0}" &&
+ OBJDIR=$3 &&
+ GREPSTR="$4" &&
++ COMMAND="$5" &&
+ if test -z "$COMMAND"
+ then
+ COMMAND="git multi-pack-index verify --object-dir=$OBJDIR"
-+ fi
++ fi &&
FILE=$OBJDIR/pack/multi-pack-index &&
chmod a+w $FILE &&
test_when_finished mv midx-backup $FILE &&Signature · 1 line
gitgitgadget