[PATCH v2 11/13] t/helper: adapt read-midx to not link ad-hoc source anymore
From: Patrick Steinhardt <hidden>
Date: 2026-09-02 13:35:27
Subsystem:
the rest · Maintainer:
Linus Torvalds
Same as in the preceding commit, refactor the setup of ad-hoc object database sources when accessing a multi-pack index in an arbitrary location to not link the newly created source into the main object database anymore. Signed-off-by: Patrick Steinhardt <redacted> --- t/helper/test-read-midx.c | 43 +++++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 12 deletions(-)
diff --git a/t/helper/test-read-midx.c b/t/helper/test-read-midx.c
index 27a05da957..1f7a1927e4 100644
--- a/t/helper/test-read-midx.c
+++ b/t/helper/test-read-midx.c@@ -5,34 +5,42 @@ #include "midx.h" #include "repository.h" #include "odb.h" +#include "odb/source-packed.h" #include "pack-bitmap.h" #include "packfile.h" #include "setup.h" #include "gettext.h" #include "pack-revindex.h" -static struct multi_pack_index *setup_midx(const char *object_dir) +static struct multi_pack_index *setup_midx(const char *object_dir, + struct odb_source_packed **out) { - struct odb_source_files *files; + struct odb_source_packed *packed; struct odb_source *source; + setup_git_directory(the_repository); + source = odb_find_source(the_repository->objects, object_dir); - if (!source) - source = odb_add_to_alternates_memory(the_repository->objects, - object_dir); - files = odb_source_files_downcast(source); + if (source) { + packed = odb_source_files_downcast(source)->packed; + } else { + packed = odb_source_packed_new(the_repository->objects, + object_dir, false); + *out = packed; + } - return load_multi_pack_index(files->packed); + return load_multi_pack_index(packed); } static int read_midx_file(const char *object_dir, const char *checksum, int show_objects) { + struct odb_source_packed *packed = NULL; uint32_t i; struct multi_pack_index *m, *tip; int ret = 0; - m = tip = setup_midx(object_dir); + m = tip = setup_midx(object_dir, &packed); if (!m) return 1;
@@ -91,29 +99,35 @@ static int read_midx_file(const char *object_dir, const char *checksum, out: close_midx(tip); + if (packed) + odb_source_free(&packed->base); return ret; } static int read_midx_checksum(const char *object_dir) { + struct odb_source_packed *packed = NULL; struct multi_pack_index *m; - m = setup_midx(object_dir); + m = setup_midx(object_dir, &packed); if (!m) return 1; printf("%s\n", midx_get_checksum_hex(m)); close_midx(m); + if (packed) + odb_source_free(&packed->base); return 0; } static int read_midx_preferred_pack(const char *object_dir) { + struct odb_source_packed *packed = NULL; struct multi_pack_index *midx = NULL; uint32_t preferred_pack; - midx = setup_midx(object_dir); + midx = setup_midx(object_dir, &packed); if (!midx) return 1;
@@ -124,17 +138,21 @@ static int read_midx_preferred_pack(const char *object_dir) } printf("%s\n", midx->pack_names[preferred_pack]); + close_midx(midx); + if (packed) + odb_source_free(&packed->base); return 0; } static int read_midx_bitmapped_packs(const char *object_dir) { + struct odb_source_packed *packed = NULL; struct multi_pack_index *midx = NULL; struct bitmapped_pack pack; uint32_t i; - midx = setup_midx(object_dir); + midx = setup_midx(object_dir, &packed); if (!midx) return 1;
@@ -150,7 +168,8 @@ static int read_midx_bitmapped_packs(const char *object_dir) } close_midx(midx); - + if (packed) + odb_source_free(&packed->base); return 0; }
--
2.55.0.979.g7e5102b832.dirty