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@google.com/ (local)
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