I think that ultimately we want something like repack on fetch, so I made some effort to implement it. There were some details that needed to be ironed out, but here's a WIP of the repack-on-fetch solution. In particular, note that we do not need to create the expensive set used by is_promisor_object(). As you can see from the patches, some polishing still needs to be done, but I'm sending them out now to check if other people have opinions about the solution. In particular, Han Young reported that an alternative solution (repack on GC) takes too long [1], so I would be interested to see if the time taken by this solution is good enough for Han Young's use case. [1] https://lore.kernel.org/git/CAG1j3zHJVrpK5JZtUXFwkZgWY1-CxqET+ygpaMqo5aM-KeWaxg@xxxxxxxxxxxxxx/ Jonathan Tan (3): move variable pack-objects record local links and call pack-objects builtin/index-pack.c | 116 ++++++++++++++++++++++++++++++++++++++- builtin/pack-objects.c | 31 ++++++++++- t/t0410-partial-clone.sh | 11 ++-- t/t5300-pack-object.sh | 8 +-- t/t5616-partial-clone.sh | 30 ++++++++++ 5 files changed, 183 insertions(+), 13 deletions(-) -- 2.47.0.105.g07ac214952-goog