]>
git.ipfire.org Git - thirdparty/git.git/blob - t/helper/test-read-midx.c
4 #include "repository.h"
5 #include "object-store.h"
6 #include "pack-bitmap.h"
8 static int read_midx_file(const char *object_dir
, int show_objects
)
11 struct multi_pack_index
*m
;
13 setup_git_directory();
14 m
= load_multi_pack_index(object_dir
, 1);
19 printf("header: %08x %d %d %d %d\n",
28 if (m
->chunk_pack_names
)
29 printf(" pack-names");
30 if (m
->chunk_oid_fanout
)
31 printf(" oid-fanout");
32 if (m
->chunk_oid_lookup
)
33 printf(" oid-lookup");
34 if (m
->chunk_object_offsets
)
35 printf(" object-offsets");
36 if (m
->chunk_large_offsets
)
37 printf(" large-offsets");
39 printf("\nnum_objects: %d\n", m
->num_objects
);
42 for (i
= 0; i
< m
->num_packs
; i
++)
43 printf("%s\n", m
->pack_names
[i
]);
45 printf("object-dir: %s\n", m
->object_dir
);
51 for (i
= 0; i
< m
->num_objects
; i
++) {
52 nth_midxed_object_oid(&oid
, m
, i
);
53 fill_midx_entry(the_repository
, &oid
, &e
, m
);
55 printf("%s %"PRIu64
"\t%s\n",
56 oid_to_hex(&oid
), e
.offset
, e
.p
->pack_name
);
64 static int read_midx_checksum(const char *object_dir
)
66 struct multi_pack_index
*m
;
68 setup_git_directory();
69 m
= load_multi_pack_index(object_dir
, 1);
72 printf("%s\n", hash_to_hex(get_midx_checksum(m
)));
76 static int read_midx_preferred_pack(const char *object_dir
)
78 struct multi_pack_index
*midx
= NULL
;
79 struct bitmap_index
*bitmap
= NULL
;
81 setup_git_directory();
83 midx
= load_multi_pack_index(object_dir
, 1);
87 bitmap
= prepare_bitmap_git(the_repository
);
90 if (!bitmap_is_midx(bitmap
)) {
91 free_bitmap_index(bitmap
);
95 printf("%s\n", midx
->pack_names
[midx_preferred_pack(bitmap
)]);
96 free_bitmap_index(bitmap
);
100 int cmd__read_midx(int argc
, const char **argv
)
102 if (!(argc
== 2 || argc
== 3))
103 usage("read-midx [--show-objects|--checksum|--preferred-pack] <object-dir>");
105 if (!strcmp(argv
[1], "--show-objects"))
106 return read_midx_file(argv
[2], 1);
107 else if (!strcmp(argv
[1], "--checksum"))
108 return read_midx_checksum(argv
[2]);
109 else if (!strcmp(argv
[1], "--preferred-pack"))
110 return read_midx_preferred_pack(argv
[2]);
111 return read_midx_file(argv
[1], 0);