This is a polished version of [1], also with all the test failures debugged and addressed. The first 4 patches are cleanups and addressing issues with tests, and the last patch contains the actual change. This aims to solve the same problem as [2]. Some issues with it have been brought up in [3] (e.g. not being able to identify if an object is missing due to repo corruption or legitimately missing because it's been promised, and also GC not removing any local object); these patches do not have those issues. (Admittedly, these patches may have other issues - mainly, more work needs to be done during fetch, and that work may result in duplicate objects on disk, but I think that both the work and the disk space used will be minimal, and the extra disk space used will go away after a GC.) [1] https://lore.kernel.org/git/cover.1729549127.git.jonathantanmy@xxxxxxxxxx/ [2] https://lore.kernel.org/git/20240925072021.77078-1-hanyang.tony@xxxxxxxxxxxxx/ [3] https://lore.kernel.org/git/a5e3322d-4e63-4b8c-84af-6578fe257cad@xxxxxxxxx/ Jonathan Tan (5): pack-objects: make variable non-static t0410: make test description clearer t0410: use from-scratch server t5300: move --window clamp test next to unclamped index-pack: repack local links into promisor packs Documentation/git-index-pack.txt | 5 ++ builtin/index-pack.c | 110 ++++++++++++++++++++++++++++++- builtin/pack-objects.c | 31 ++++++++- t/t0410-partial-clone.sh | 6 +- t/t5300-pack-object.sh | 10 +-- t/t5616-partial-clone.sh | 30 +++++++++ 6 files changed, 180 insertions(+), 12 deletions(-) -- 2.47.0.163.g1226f6d8fa-goog