packfile: close commit-graph in close_all_packs
authorDerrick Stolee <dstolee@microsoft.com>
Fri, 17 May 2019 18:41:48 +0000 (11:41 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 12 Jun 2019 18:33:54 +0000 (11:33 -0700)
commit5472c32c3724e1404c3d80368edc28910969c29a
treed3b056a5e65caf540396dfecac1a2488457243c0
parentc3a3a964b29221a9b5fa305a08037c90b9f74be0
packfile: close commit-graph in close_all_packs

The close_all_packs() method is used to close all read handles to
pack-files and the multi-pack-index before running 'git gc --auto'.
This is particularly important on the Windows platform, where read
handles block any writes to those files. Replacing one of these
files with a rename() will fail in this situation.

The commit-graph also performs a rename, so is susceptable to this
problem. We are careful to close the commit-graph before writing,
but that doesn't work when a 'git fetch' (or similar) process runs
'git gc --auto' which may write a commit-graph.

Here, close the commit-graph as part of close_all_packs().

Reported-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
packfile.c