Hi, this patch series is a follow up to the recent patch series that started to move the MIDX into its object source. It refactors the MIDX subsystem so that we always read and write them via an ODB source. This ultimately allows us to store a pointer to the owning ODB source in the MIDX and thus dedup some redundant information. This series is built on top of e813a0200a7 (The fifteenth batch, 2025-07-28) with ps/object-store-midx at ec865d94d46 (midx: remove now-unused linked list of multi-pack indices, 2025-07-15) merged into it. Changes in v2: - Fix a comment typo. - Introduce another commit that simplifies the calling convention for `link_alt_odb_entry()`. - Link to v1: https://lore.kernel.org/r/20250729-b4-pks-midx-deduplicate-source-info-v1-0-748db2eda3b5@xxxxxx Thanks! Patrick --- Patrick Steinhardt (9): odb: store locality in object database sources odb: allow `odb_find_source()` to fail odb: return newly created in-memory sources odb: simplify calling `link_alt_odb_entry()` midx: drop redundant `struct repository` parameter midx: load multi-pack indices via their source midx: write multi-pack indices via their source midx: stop duplicating info redundant with its owning source midx: compute paths via their source builtin/commit-graph.c | 4 ++ builtin/multi-pack-index.c | 31 +++++++--- builtin/pack-objects.c | 2 +- builtin/repack.c | 7 ++- midx-write.c | 116 +++++++++++++++++-------------------- midx.c | 135 +++++++++++++++++++++----------------------- midx.h | 42 ++++++-------- odb.c | 43 ++++++-------- odb.h | 16 ++++-- pack-bitmap.c | 15 +++-- pack-revindex.c | 14 ++--- packfile.c | 13 ++--- repository.c | 1 + t/helper/test-read-midx.c | 31 +++++----- t/t5319-multi-pack-index.sh | 8 +-- 15 files changed, 239 insertions(+), 239 deletions(-) Range-diff versus v1: 1: 38e145e1e8 ! 1: d61e0702df odb: store locality in object database sources @@ odb.h: struct odb_source { struct multi_pack_index *midx; + /* -+ * Figure out whether this is the local alternate of the owning ++ * Figure out whether this is the local source of the owning + * repository, which would typically be its ".git/objects" directory. + * This local object directory is usually where objects would be + * written to. 2: bdf2e55514 = 2: 5f0a422b17 odb: allow `odb_find_source()` to fail 3: 6e11c5ecb5 = 3: 698f8793fd odb: return newly created in-memory sources -: ---------- > 4: 6fd1530502 odb: simplify calling `link_alt_odb_entry()` 4: 52b0e420d1 = 5: 90d9dbb3f7 midx: drop redundant `struct repository` parameter 5: b1c200817a = 6: 2c4d45d912 midx: load multi-pack indices via their source 6: 9b064ce6b2 = 7: d4d7ccab0e midx: write multi-pack indices via their source 7: 0553fb6b8a = 8: 9a6ce9872c midx: stop duplicating info redundant with its owning source 8: 13c480bac9 = 9: b814e2f328 midx: compute paths via their source --- base-commit: ee2fd3d4b224c8145eeff04101ea6075560973e1 change-id: 20250729-b4-pks-midx-deduplicate-source-info-fcf3c08bfd53