]> git.ipfire.org Git - thirdparty/git.git/commitdiff
packfile: pass source to `prepare_pack()`
authorPatrick Steinhardt <ps@pks.im>
Thu, 18 Dec 2025 06:55:21 +0000 (07:55 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 7 Jan 2026 00:37:43 +0000 (09:37 +0900)
When preparing a packfile we pass various pieces attached to the pack's
object database source via the `struct prepare_pack_data`. Refactor this
code to instead pass in the source directly. This reduces the number of
variables we need to pass and allows for a subsequent refactoring where
we start to prepare the pack via the source.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
packfile.c

index 0a05a10daaccb1644f0ecb5b5fed73bf1262e630..ab86afa01d7a992186ed09bcf1b30ce2e1fb0676 100644 (file)
@@ -975,10 +975,8 @@ void for_each_file_in_pack_dir(const char *objdir,
 }
 
 struct prepare_pack_data {
-       struct repository *r;
+       struct odb_source *source;
        struct string_list *garbage;
-       int local;
-       struct multi_pack_index *m;
 };
 
 static void prepare_pack(const char *full_name, size_t full_name_len,
@@ -988,10 +986,10 @@ static void prepare_pack(const char *full_name, size_t full_name_len,
        size_t base_len = full_name_len;
 
        if (strip_suffix_mem(full_name, &base_len, ".idx") &&
-           !(data->m && midx_contains_pack(data->m, file_name))) {
+           !(data->source->midx && midx_contains_pack(data->source->midx, file_name))) {
                char *trimmed_path = xstrndup(full_name, full_name_len);
-               packfile_store_load_pack(data->r->objects->packfiles,
-                                        trimmed_path, data->local);
+               packfile_store_load_pack(data->source->odb->packfiles,
+                                        trimmed_path, data->source->local);
                free(trimmed_path);
        }
 
@@ -1020,10 +1018,8 @@ static void prepare_packed_git_one(struct odb_source *source)
 {
        struct string_list garbage = STRING_LIST_INIT_DUP;
        struct prepare_pack_data data = {
-               .m = source->midx,
-               .r = source->odb->repo,
+               .source = source,
                .garbage = &garbage,
-               .local = source->local,
        };
 
        for_each_file_in_pack_dir(source->path, prepare_pack, &data);