summaryrefslogtreecommitdiff
path: root/tmp-objdir.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2016-10-03 16:49:14 -0400
committerJunio C Hamano <gitster@pobox.com>2016-10-10 13:54:02 -0700
commit722ff7f876c8a2ad99c42434f58af098e61b96e8 (patch)
tree33b189d2d2673e4daf671bf9f9bf9261d2cf078b /tmp-objdir.c
parent2564d994c9c91aea58d59565d68d42bbc017f536 (diff)
downloadgit-722ff7f876c8a2ad99c42434f58af098e61b96e8.tar.gz
receive-pack: quarantine objects until pre-receive accepts
When a client pushes objects to us, index-pack checks the objects themselves and then installs them into place. If we then reject the push due to a pre-receive hook, we cannot just delete the packfile; other processes may be depending on it. We have to do a normal reachability check at this point via `git gc`. But such objects may hang around for weeks due to the gc.pruneExpire grace period. And worse, during that time they may be exploded from the pack into inefficient loose objects. Instead, this patch teaches receive-pack to put the new objects into a "quarantine" temporary directory. We make these objects available to the connectivity check and to the pre-receive hook, and then install them into place only if it is successful (and otherwise remove them as tempfiles). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'tmp-objdir.c')
0 files changed, 0 insertions, 0 deletions