{"thread":{"id":"65989","subject":"[PATCH 0/2] packfile URIs: support concurrent downloads","startedAt":"2026-07-13T22:37:06Z","lastAt":"2026-07-13T22:37:06Z","messageCount":1,"participants":["Ted Nyman"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"548048","messageId":"alVojchfRvHG8p9D@com-76773","threadId":"65989","inReplyTo":null,"subject":"[PATCH 0/2] packfile URIs: support concurrent downloads","fromName":"Ted Nyman","fromEmail":"tnyman@openai.com","sentAt":"2026-07-13T22:37:01Z","receivedAt":"2026-07-13T22:37:06Z","isPatch":true,"body":"Packfile URI downloads currently stage a pack at\nobjects/pack/pack-<hash>.pack.temp. Two Git processes fetching the same\npack into one object database can append to that file concurrently,\nwhich can corrupt the temporary pack or cause a resume request at EOF.\n\nThe first patch gives each direct packfile URI download a private\ntemporary file. Ordinary dumb HTTP pack requests retain their existing\nresumable staging behavior. A later packfile URI retry starts a new\ndownload.\n\nThe second patch handles the related .keep race. When another process\nhas already created the keep file, index-pack reports \"pack<TAB><hash>\"\ninstead of \"keep<TAB><hash>\". Accept both successful forms and remove\nonly keep files created by the current process.\n\nEach patch adds a regression test for its respective race.\n\nTed Nyman (2):\n  http: use unique tempfiles for packfile URI downloads\n  fetch-pack: accept \"pack\" output for packfile URIs\n\n Documentation/git-http-fetch.adoc |  5 +-\n fetch-pack.c                      | 36 ++++++++-------\n http.c                            | 77 +++++++++++++++++++++----------\n http.h                            |  1 +\n t/t5550-http-fetch-dumb.sh        | 72 ++++++++++++++++++++++++++++-\n t/t5702-protocol-v2.sh            | 31 +++++++++++++\n 6 files changed, 177 insertions(+), 45 deletions(-)\n\n\nbase-commit: e9019fcafe0040228b8631c30f97ae1adb61bcdc\n-- \n2.55.0\n"}]}