]> granicus.if.org Git - git/commit
gc/repack: release packs when needed
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Sat, 15 Dec 2018 22:04:01 +0000 (14:04 -0800)
committerJunio C Hamano <gitster@pobox.com>
Fri, 11 Jan 2019 17:22:39 +0000 (09:22 -0800)
commit5bdece0d70578edda870b0cf04d598ba04e7a0a3
treef9adb0a00ac6e23e7ca27dd963054b9b23189723
parent98cdfbb84ad2ed6a2eb43dafa357a70a4b0a0fad
gc/repack: release packs when needed

On Windows, files cannot be removed nor renamed if there are still
handles held by a process. To remedy that, we introduced the
close_all_packs() function.

Earlier, we made sure that the packs are released just before `git gc`
is spawned, in case that gc wants to remove no-longer needed packs.

But this developer forgot that gc itself also needs to let go of packs,
e.g. when consolidating all packs via the --aggressive option.

Likewise, `git repack -d` wants to delete obsolete packs and therefore
needs to close all pack handles, too.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/gc.c
builtin/repack.c