[PATCH 2/3] packfile: close commit-graph in close_all_packs
- Date: Fri, 17 May 2019 11:41:48 -0700 (PDT)
- From: "Derrick Stolee via GitGitGadget" <gitgitgadget@xxxxxxxxx>
- Subject: [PATCH 2/3] packfile: close commit-graph in close_all_packs
From: Derrick Stolee <dstolee@xxxxxxxxxxxxx>
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@xxxxxx>
Signed-off-by: Derrick Stolee <dstolee@xxxxxxxxxxxxx>
packfile.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/packfile.c b/packfile.c
index 16bcb75262..ce12bffe3e 100644
@@ -16,6 +16,7 @@
char *odb_pack_name(struct strbuf *buf,
const unsigned char *sha1,
@@ -350,6 +351,8 @@ void close_all_packs(struct raw_object_store *o)
o->multi_pack_index = NULL;