diff options
| author | Junio C Hamano <gitster@pobox.com> | 2019-01-18 13:49:57 -0800 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2019-01-18 13:49:57 -0800 |
| commit | 5104f8f1acaecbe252cd0c561582052c12278b62 (patch) | |
| tree | 8a30c9955bd2dcd3782e27f0ca551878b4624638 | |
| parent | Merge branch 'en/show-ref-doc-fix' (diff) | |
| parent | gc/repack: release packs when needed (diff) | |
| download | git-5104f8f1acaecbe252cd0c561582052c12278b62.tar.gz git-5104f8f1acaecbe252cd0c561582052c12278b62.zip | |
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.c | 4 | ||||
| -rw-r--r-- | builtin/repack.c | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/builtin/gc.c b/builtin/gc.c index 7696017cd4..020f725acc 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 2a1c7b21c5..67f8978043 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 |
