As suggested by Jonathan[1], there are number of ways to fix this issue. We have already explored some of them in this thread, and so far none of them is satisfiable. Calvin and I tried to address the problem from fetch-pack side and rev-list side. But the fix either consumes too much CPU power or results in inefficient bandwidth use. So let's attack the problem from repack side. The goal is to prevent repack from discarding local objects, previously it is done by carefully separating promisor objects and normal objects in rev-list. The implementation is flawed and no solution have been found so far. Instead, we can get ride of rev-list and just pack everything into promisor files. This way, no objects would be lost. By using 'repack everything', repacking requires less work and we are not using more bandwidth. The only downside is normal objects packing does not benefiting from the history and path based delta calculation. Majority of objects in a partial repo is promisor objects, so the impact of worse normal objects repacking is negligible. [1] https://lore.kernel.org/git/20240813004508.2768102-1-jonathantanmy@xxxxxxxxxx/ Han Young (2): repack: pack everything into promisor packfile in partial repos t0410: adapt tests to repack changes builtin/repack.c | 258 ++++++++++++++++++++++----------------- t/t0410-partial-clone.sh | 68 +---------- 2 files changed, 145 insertions(+), 181 deletions(-) -- 2.46.0