[PATCH 0/5] builtin/repack: make geometric repacking compatible with promisors
From: Patrick Steinhardt <hidden>
Date: 2026-01-05 13:16:51
Hi,
I recently noticed that geometric repacking is incompatible with
promisor remotes. This is because we invoke git-pack-objects(1) with
both "--stdin-packs" and "--exclude-promisor-objects", and those flags
are mutually exclusive. Next to us dying though, we also don't have any
logic to mark merged packs as promisors in case any of the source packs
was a promisor.
This patch series fixes this by making these flags work with one another
and by introducing special handling for promisor packs during geometric
repacks.
Thanks!
Patrick
---
Patrick Steinhardt (5):
builtin/pack-objects: exclude promisor objects with "--stdin-packs"
repack-geometry: extract function to compute repacking split
repack-promisor: extract function to finalize repacking
repack-promisor: extract function to remove redundant packs
builtin/repack: handle promisor packs with geometric repacking
builtin/pack-objects.c | 14 +++++--
builtin/repack.c | 3 ++
repack-geometry.c | 89 ++++++++++++++++++++++++++-------------
repack-promisor.c | 97 ++++++++++++++++++++++++++++++-------------
repack.h | 10 +++++
t/t5331-pack-objects-stdin.sh | 39 +++++++++++++++++
t/t7703-repack-geometric.sh | 61 +++++++++++++++++++++++++++
7 files changed, 250 insertions(+), 63 deletions(-)
---
base-commit: 68cb7f9e92a5d8e9824f5b52ac3d0a9d8f653dbe
change-id: 20260105-pks-geometric-repack-with-promisors-2f948d6db774