summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2019-01-18 21:49:57 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-01-18 21:49:57 (GMT)
commit5104f8f1acaecbe252cd0c561582052c12278b62 (patch)
tree8a30c9955bd2dcd3782e27f0ca551878b4624638
parenteab7584e3785d4a210ba326bcb02294285f57a22 (diff)
parent5bdece0d70578edda870b0cf04d598ba04e7a0a3 (diff)
downloadgit-5104f8f1acaecbe252cd0c561582052c12278b62.zip
git-5104f8f1acaecbe252cd0c561582052c12278b62.tar.gz
git-5104f8f1acaecbe252cd0c561582052c12278b62.tar.bz2
Merge branch 'js/gc-repack-close-before-remove'
"git gc" and "git repack" did not close the open packfiles that they found unneeded before removing them, which didn't work on a platform incapable of removing an open file. This has been corrected. * js/gc-repack-close-before-remove: gc/repack: release packs when needed
-rw-r--r--builtin/gc.c4
-rw-r--r--builtin/repack.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/builtin/gc.c b/builtin/gc.c
index 7696017..020f725 100644
--- a/builtin/gc.c
+++ b/builtin/gc.c
@@ -659,8 +659,10 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
report_garbage = report_pack_garbage;
reprepare_packed_git(the_repository);
- if (pack_garbage.nr > 0)
+ if (pack_garbage.nr > 0) {
+ close_all_packs(the_repository->objects);
clean_pack_garbage();
+ }
if (gc_write_commit_graph)
write_commit_graph_reachable(get_object_directory(), 0,
diff --git a/builtin/repack.c b/builtin/repack.c
index 2a1c7b2..67f8978 100644
--- a/builtin/repack.c
+++ b/builtin/repack.c
@@ -419,6 +419,8 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
if (!names.nr && !po_args.quiet)
printf_ln(_("Nothing new to pack."));
+ close_all_packs(the_repository->objects);
+
/*
* Ok we have prepared all new packfiles.
* First see if there are packs of the same name and if so