midx: implement writing incremental MIDX bitmaps
Now that the pack-bitmap machinery has learned how to read and interact
with an incremental MIDX bitmap, teach the pack-bitmap-write.c machinery
(and relevant callers from within the MIDX machinery) to write such
bitmaps.
The details for doing so are mostly straightforward. The main changes
are as follows:
- find_object_pos() now makes use of an extra MIDX parameter which is
used to locate the bit positions of objects which are from previous
layers (and thus do not exist in the current layer's pack_order
field).
(Note also that the pack_order field is moved into struct
write_midx_context to further simplify the callers for
write_midx_bitmap()).
- bitmap_writer_build_type_index() first determines how many objects
precede the current bitmap layer and offsets the bits it sets in
each respective type-level bitmap by that amount so they can be OR'd
together.
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Acked-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
5999b44fcb
commit
27afc272c4
@@ -111,6 +111,7 @@ struct bitmap_writer {
|
||||
|
||||
kh_oid_map_t *bitmaps;
|
||||
struct packing_data *to_pack;
|
||||
struct multi_pack_index *midx; /* if appending to a MIDX chain */
|
||||
|
||||
struct bitmapped_commit *selected;
|
||||
unsigned int selected_nr, selected_alloc;
|
||||
@@ -125,7 +126,8 @@ struct bitmap_writer {
|
||||
};
|
||||
|
||||
void bitmap_writer_init(struct bitmap_writer *writer, struct repository *r,
|
||||
struct packing_data *pdata);
|
||||
struct packing_data *pdata,
|
||||
struct multi_pack_index *midx);
|
||||
void bitmap_writer_show_progress(struct bitmap_writer *writer, int show);
|
||||
void bitmap_writer_set_checksum(struct bitmap_writer *writer,
|
||||
const unsigned char *sha1);
|
||||
|
||||
Reference in New Issue
Block a user