In Windows, the way we rename a lock file to replace the underlying file does not work when a process holds a read handle. For this reason, we call close_all_packs() everywhere before starting a git gc --auto subprocess. We also call close_commit_graph() before renaming the commit-graph lock file. But we don't close the commit-graph handles before running gc, which can cause an issue when gc.writeCommitGraph is enabled. This series adds close_commit_graph() to close_all_packs() and then renames close_all_packs() to close_object_store(). This name is more descriptive of its larger purpose. This is based on ds/commit-graph-write-refactor to avoid conflicts. Thanks, -Stolee Derrick Stolee (3): commit-graph: use raw_object_store when closing packfile: close commit-graph in close_all_packs packfile: close_all_packs to close_object_store builtin/am.c | 2 +- builtin/clone.c | 2 +- builtin/fetch.c | 2 +- builtin/gc.c | 4 ++-- builtin/merge.c | 2 +- builtin/rebase.c | 2 +- builtin/receive-pack.c | 2 +- builtin/repack.c | 2 +- commit-graph.c | 8 ++++---- commit-graph.h | 2 +- object.c | 2 +- packfile.c | 5 ++++- packfile.h | 2 +- upload-pack.c | 2 +- 14 files changed, 21 insertions(+), 18 deletions(-) base-commit: 8520d7fc7c6edd4d71582c69a873436029b6cb1b Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-208%2Fderrickstolee%2Fclose-graph-everywhere-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-208/derrickstolee/close-graph-everywhere-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/208 -- gitgitgadget