From: Junio C Hamano Date: Fri, 19 Jul 2019 18:30:22 +0000 (-0700) Subject: Merge branch 'ew/repack-with-bitmaps-by-default' X-Git-Tag: v2.23.0-rc0~32 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/d60dc1a0b3829f3c4d69696f43f1c178c0701cdb?ds=inline;hp=-c Merge branch 'ew/repack-with-bitmaps-by-default' Generation of pack bitmaps are now disabled when .keep files exist, as these are mutually exclusive features. * ew/repack-with-bitmaps-by-default: repack: disable bitmaps-by-default if .keep files exist --- d60dc1a0b3829f3c4d69696f43f1c178c0701cdb diff --combined builtin/repack.c index d6abf74608,73250b2431..30982ed2a2 --- a/builtin/repack.c +++ b/builtin/repack.c @@@ -89,6 -89,17 +89,17 @@@ static void remove_pack_on_signal(int s raise(signo); } + static int has_pack_keep_file(void) + { + struct packed_git *p; + + for (p = get_all_packs(the_repository); p; p = p->next) { + if (p->pack_keep) + return 1; + } + return 0; + } + /* * Adds all packs hex strings to the fname list, which do not * have a corresponding .keep file. These packs are not to @@@ -129,9 -140,19 +140,9 @@@ static void get_non_kept_pack_filenames static void remove_redundant_pack(const char *dir_name, const char *base_name) { - const char *exts[] = {".pack", ".idx", ".keep", ".bitmap", ".promisor"}; - int i; struct strbuf buf = STRBUF_INIT; - size_t plen; - - strbuf_addf(&buf, "%s/%s", dir_name, base_name); - plen = buf.len; - - for (i = 0; i < ARRAY_SIZE(exts); i++) { - strbuf_setlen(&buf, plen); - strbuf_addstr(&buf, exts[i]); - unlink(buf.buf); - } + strbuf_addf(&buf, "%s/%s.pack", dir_name, base_name); + unlink_pack_path(buf.buf, 1); strbuf_release(&buf); } @@@ -333,9 -354,12 +344,12 @@@ int cmd_repack(int argc, const char **a (unpack_unreachable || (pack_everything & LOOSEN_UNREACHABLE))) die(_("--keep-unreachable and -A are incompatible")); - if (write_bitmaps < 0) + if (write_bitmaps < 0) { write_bitmaps = (pack_everything & ALL_INTO_ONE) && - is_bare_repository(); + is_bare_repository() && + keep_pack_list.nr == 0 && + !has_pack_keep_file(); + } if (pack_kept_objects < 0) pack_kept_objects = write_bitmaps; @@@ -412,7 -436,7 +426,7 @@@ if (!names.nr && !po_args.quiet) printf_ln(_("Nothing new to pack.")); - close_all_packs(the_repository->objects); + close_object_store(the_repository->objects); /* * Ok we have prepared all new packfiles.