]> git.ipfire.org Git - thirdparty/git.git/commitdiff
pack-bitmap: allow passing payloads to `show_reachable_fn()`
authorPatrick Steinhardt <ps@pks.im>
Wed, 2 Apr 2025 11:13:42 +0000 (13:13 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 7 Apr 2025 21:43:51 +0000 (14:43 -0700)
The `show_reachable_fn` callback is used by a couple of functions to
present reachable objects to the caller. The function does not provide a
way for the caller to pass a payload though, which is functionality that
we'll require in a subsequent commit.

Change the callback type to accept a payload and adapt all callsites
accordingly.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/pack-objects.c
builtin/rev-list.c
pack-bitmap.c
pack-bitmap.h
reachable.c

index a7e4bb79049b949270dab5d96fd9d51f7fba4625..38784613fc0b5a6d04a8aae3e1b77cc6ab00e3a0 100644 (file)
@@ -1736,7 +1736,8 @@ static int add_object_entry(const struct object_id *oid, enum object_type type,
 static int add_object_entry_from_bitmap(const struct object_id *oid,
                                        enum object_type type,
                                        int flags UNUSED, uint32_t name_hash,
-                                       struct packed_git *pack, off_t offset)
+                                       struct packed_git *pack, off_t offset,
+                                       void *payload UNUSED)
 {
        display_progress(progress_state, ++nr_seen);
 
index bb26bee0d4565ad2c9df92fe7035bf8dd556217c..1100dd2abe7e8334371feabef60caaa149c8b388 100644 (file)
@@ -429,7 +429,8 @@ static int show_object_fast(
        int exclude UNUSED,
        uint32_t name_hash UNUSED,
        struct packed_git *found_pack UNUSED,
-       off_t found_offset UNUSED)
+       off_t found_offset UNUSED,
+       void *payload UNUSED)
 {
        fprintf(stdout, "%s\n", oid_to_hex(oid));
        return 1;
index 6f7fd94c36f41de41e5668489e5f34b7a81e282e..d192fb87da9ea56d6bd80d722541a10cfd75e453 100644 (file)
@@ -1625,7 +1625,7 @@ static void show_extended_objects(struct bitmap_index *bitmap_git,
                    (obj->type == OBJ_TAG && !revs->tag_objects))
                        continue;
 
-               show_reach(&obj->oid, obj->type, 0, eindex->hashes[i], NULL, 0);
+               show_reach(&obj->oid, obj->type, 0, eindex->hashes[i], NULL, 0, NULL);
        }
 }
 
@@ -1663,7 +1663,8 @@ static void init_type_iterator(struct ewah_or_iterator *it,
 static void show_objects_for_type(
        struct bitmap_index *bitmap_git,
        enum object_type object_type,
-       show_reachable_fn show_reach)
+       show_reachable_fn show_reach,
+       void *payload)
 {
        size_t i = 0;
        uint32_t offset;
@@ -1715,7 +1716,7 @@ static void show_objects_for_type(
                        if (bitmap_git->hashes)
                                hash = get_be32(bitmap_git->hashes + index_pos);
 
-                       show_reach(&oid, object_type, 0, hash, pack, ofs);
+                       show_reach(&oid, object_type, 0, hash, pack, ofs, payload);
                }
        }
 
@@ -2518,13 +2519,13 @@ void traverse_bitmap_commit_list(struct bitmap_index *bitmap_git,
 {
        assert(bitmap_git->result);
 
-       show_objects_for_type(bitmap_git, OBJ_COMMIT, show_reachable);
+       show_objects_for_type(bitmap_git, OBJ_COMMIT, show_reachable, NULL);
        if (revs->tree_objects)
-               show_objects_for_type(bitmap_git, OBJ_TREE, show_reachable);
+               show_objects_for_type(bitmap_git, OBJ_TREE, show_reachable, NULL);
        if (revs->blob_objects)
-               show_objects_for_type(bitmap_git, OBJ_BLOB, show_reachable);
+               show_objects_for_type(bitmap_git, OBJ_BLOB, show_reachable, NULL);
        if (revs->tag_objects)
-               show_objects_for_type(bitmap_git, OBJ_TAG, show_reachable);
+               show_objects_for_type(bitmap_git, OBJ_TAG, show_reachable, NULL);
 
        show_extended_objects(bitmap_git, revs, show_reachable);
 }
index dd0951088f6478a15c363c63577b3f07b56e04bc..de6bf534fefd24cf7cf4b4d6f62015a26731e090 100644 (file)
@@ -50,7 +50,8 @@ typedef int (*show_reachable_fn)(
        int flags,
        uint32_t hash,
        struct packed_git *found_pack,
-       off_t found_offset);
+       off_t found_offset,
+       void *payload);
 
 struct bitmap_index;
 
index 9ee04c89ec6151b1df64dc7010cfd6b14dd82c3a..421d354d3b58519730ae6b81472f10d1d54c19d6 100644 (file)
@@ -341,7 +341,8 @@ static int mark_object_seen(const struct object_id *oid,
                             int exclude UNUSED,
                             uint32_t name_hash UNUSED,
                             struct packed_git *found_pack UNUSED,
-                            off_t found_offset UNUSED)
+                            off_t found_offset UNUSED,
+                            void *payload UNUSED)
 {
        struct object *obj = lookup_object_by_type(the_repository, oid, type);
        if (!obj)