This patch set resolves the .gitmodules-and-tree-in-separate-packfiles issue I mentioned in [1] by having index-pack print out all dangling .gitmodules (instead of returning with an error code) and then teaching fetch-pack to read those and run its own fsck checks after all index-pack invocations are complete. As part of this, index-pack has to output (1) the hash that goes into the name of the .pack/.idx file and (2) the hashes of all dangling .gitmodules. I just had (2) come after (1). If anyone has a better idea, I'm interested. I also discovered a bug in that different index-pack arguments were used when processing the inline packfile and when processing the ones referenced by URIs. Patch 1-3 fixes that bug by passing the arguments to use as a space-separated URL-encoded list. (URL-encoded so that we can have spaces in the arguments.) Again, if anyone has a better idea, I'm interested. It is only in patch 4 that we have the dangling .gitmodules fix. [1] https://lore.kernel.org/git/20210115234300.350442-1-jonathantanmy@xxxxxxxxxx/ Jonathan Tan (4): http: allow custom index-pack args http-fetch: allow custom index-pack args fetch-pack: with packfile URIs, use index-pack arg fetch-pack: print and use dangling .gitmodules Documentation/git-http-fetch.txt | 9 ++- Documentation/git-index-pack.txt | 7 +- builtin/index-pack.c | 9 ++- builtin/receive-pack.c | 2 +- fetch-pack.c | 106 ++++++++++++++++++++++++++----- fsck.c | 16 +++-- fsck.h | 8 +++ http-fetch.c | 35 +++++++++- http.c | 15 +++-- http.h | 10 +-- pack-write.c | 8 ++- pack.h | 2 +- t/t5550-http-fetch-dumb.sh | 3 +- t/t5702-protocol-v2.sh | 47 ++++++++++++++ 14 files changed, 232 insertions(+), 45 deletions(-) -- 2.30.0.280.ga3ce27912f-goog