Skip to content

pr-208/derrickstolee/close-graph-everywhere-v1

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

Submitted-As: https://public-inbox.org/git/pull.208.git.gitgitgadget@gmail.com
Assets 2