multi-pack-index: verify missing pack
Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Derrick Stolee committed
Sep 13, 2018 at 11:02 UTC
d4bf1d88b9020d3921ac4e4d8a8fd6ca5015b243
2 files changed
+21
midx.c
+16
@@ -926,13 +926,29 @@ void clear_midx_file(const char *object_dir)
926
927
static int verify_midx_error;
928
929
+static void midx_report(const char *fmt, ...)
930
+{
931
+ va_list ap;
932
+ verify_midx_error = 1;
933
+ va_start(ap, fmt);
934
+ vfprintf(stderr, fmt, ap);
935
+ fprintf(stderr, "\n");
936
+ va_end(ap);
937
+}
938
+
939
int verify_midx_file(const char *object_dir)
940
{
941
+ uint32_t i;
942
struct multi_pack_index *m = load_multi_pack_index(object_dir, 1);
943
verify_midx_error = 0;
944
945
if (!m)
946
return 0;
947
948
+ for (i = 0; i < m->num_packs; i++) {
949
+ if (prepare_midx_pack(m, i))
950
+ midx_report("failed to load pack in position %d", i);
951
+ }
952
+
953
return verify_midx_error;
954
}
t/t5319-multi-pack-index.sh
+5
@@ -222,6 +222,11 @@ test_expect_success 'verify packnames out of order' '
222
"pack names out of order"
223
'
224
225
+test_expect_success 'verify packnames out of order' '
226
+ corrupt_midx_and_verify $MIDX_BYTE_PACKNAME_ORDER "a" $objdir \
227
+ "failed to load pack"
228
+'
229
+
230
test_expect_success 'repack removes multi-pack-index' '
231
test_path_is_file $objdir/pack/multi-pack-index &&
232
git repack -adf &&