[PATCH 0/2] packfile URIs: support concurrent downloads
From: Ted Nyman <hidden>
Date: 2026-07-13 22:34:26
Packfile URI downloads currently stage a pack at objects/pack/pack-<hash>.pack.temp. Two Git processes fetching the same pack into one object database can append to that file concurrently, which can corrupt the temporary pack or cause a resume request at EOF. The first patch gives each direct packfile URI download a private temporary file. Ordinary dumb HTTP pack requests retain their existing resumable staging behavior. A later packfile URI retry starts a new download. The second patch handles the related .keep race. When another process has already created the keep file, index-pack reports "pack<TAB><hash>" instead of "keep<TAB><hash>". Accept both successful forms and remove only keep files created by the current process. Each patch adds a regression test for its respective race. Ted Nyman (2): http: use unique tempfiles for packfile URI downloads fetch-pack: accept "pack" output for packfile URIs Documentation/git-http-fetch.adoc | 5 +- fetch-pack.c | 36 ++++++++------- http.c | 77 +++++++++++++++++++++---------- http.h | 1 + t/t5550-http-fetch-dumb.sh | 72 ++++++++++++++++++++++++++++- t/t5702-protocol-v2.sh | 31 +++++++++++++ 6 files changed, 177 insertions(+), 45 deletions(-) base-commit: e9019fcafe0040228b8631c30f97ae1adb61bcdc -- 2.55.0