]> git.ipfire.org Git - thirdparty/git.git/commitdiff
pack-bitmap: initialize `bitmap_writer_init()` with packing_data
authorTaylor Blau <me@ttaylorr.com>
Thu, 15 Aug 2024 17:31:00 +0000 (13:31 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 15 Aug 2024 18:18:04 +0000 (11:18 -0700)
In order to determine its object order, the pack-bitmap machinery keeps
a 'struct packing_data' corresponding to the pack or pseudo-pack (when
writing a MIDX bitmap) being written.

The to_pack field is provided to the bitmap machinery by callers of
bitmap_writer_build() and assigned to the bitmap_writer struct at that
point.

But a subsequent commit will want to have access to that data earlier on
during commit selection. Prepare for that by adding a 'to_pack' argument
to 'bitmap_writer_init()', and initializing the field during that
function.

Subsequent commits will clean up other functions which take
now-redundant arguments (like nr_objects, which is equivalent to
pdata->objects_nr, or pdata itself).

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/pack-objects.c
midx-write.c
pack-bitmap-write.c
pack-bitmap.h

index f395488971f9c51ea8a5b3a5ef657df1ca532d99..0ad533c045babd860001ac80de3698f5e363e5ff 100644 (file)
@@ -1342,7 +1342,7 @@ static void write_pack_file(void)
 
                        if (write_bitmap_index) {
                                bitmap_writer_init(&bitmap_writer,
-                                                  the_repository);
+                                                  the_repository, &to_pack);
                                bitmap_writer_set_checksum(&bitmap_writer, hash);
                                bitmap_writer_build_type_index(&bitmap_writer,
                                        &to_pack, written_list, nr_written);
index a77ee73c68158772b1e142f3c3a641cb7a61720e..62f507eb729509208e579aeee555304f437ffa82 100644 (file)
@@ -825,7 +825,7 @@ static int write_midx_bitmap(const char *midx_name,
        for (i = 0; i < pdata->nr_objects; i++)
                index[i] = &pdata->objects[i].idx;
 
-       bitmap_writer_init(&writer, the_repository);
+       bitmap_writer_init(&writer, the_repository, pdata);
        bitmap_writer_show_progress(&writer, flags & MIDX_PROGRESS);
        bitmap_writer_build_type_index(&writer, pdata, index,
                                       pdata->nr_objects);
index bf96c808981c0aaf962d500ef06f0e6c6c42e90f..4a7d2d1370e0b0cc17659c50c36cb2e12e6a1aba 100644 (file)
@@ -41,13 +41,15 @@ static inline int bitmap_writer_nr_selected_commits(struct bitmap_writer *writer
        return writer->selected_nr - writer->pseudo_merges_nr;
 }
 
-void bitmap_writer_init(struct bitmap_writer *writer, struct repository *r)
+void bitmap_writer_init(struct bitmap_writer *writer, struct repository *r,
+                       struct packing_data *pdata)
 {
        memset(writer, 0, sizeof(struct bitmap_writer));
        if (writer->bitmaps)
                BUG("bitmap writer already initialized");
        writer->bitmaps = kh_init_oid_map();
        writer->pseudo_merge_commits = kh_init_oid_map();
+       writer->to_pack = pdata;
 
        string_list_init_dup(&writer->pseudo_merge_groups);
 
index 1171e6d989379376a6bc839646f8eca0dd15ae35..ab20d6a0b683110770afc82f574235650997e622 100644 (file)
@@ -123,7 +123,8 @@ struct bitmap_writer {
        unsigned char pack_checksum[GIT_MAX_RAWSZ];
 };
 
-void bitmap_writer_init(struct bitmap_writer *writer, struct repository *r);
+void bitmap_writer_init(struct bitmap_writer *writer, struct repository *r,
+                       struct packing_data *pdata);
 void bitmap_writer_show_progress(struct bitmap_writer *writer, int show);
 void bitmap_writer_set_checksum(struct bitmap_writer *writer,
                                const unsigned char *sha1);