summaryrefslogtreecommitdiff
path: root/builtin/repack.c
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2019-07-19 11:30:22 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2019-07-19 11:30:22 -0700
commitd60dc1a0b3829f3c4d69696f43f1c178c0701cdb (patch)
tree5d27c9ed3cc2068f3a23250bf78afb9f0fa333fd /builtin/repack.c
parentMerge branch 'jk/check-connected-with-alternates' (diff)
parentrepack: disable bitmaps-by-default if .keep files exist (diff)
downloadtgif-d60dc1a0b3829f3c4d69696f43f1c178c0701cdb.tar.xz
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
Diffstat (limited to 'builtin/repack.c')
-rw-r--r--builtin/repack.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/builtin/repack.c b/builtin/repack.c
index d6abf74608..30982ed2a2 100644
--- a/builtin/repack.c
+++ b/builtin/repack.c
@@ -89,6 +89,17 @@ static void remove_pack_on_signal(int signo)
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
@@ -333,9 +344,12 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
(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;