Browse Source

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
maint
Junio C Hamano 6 years ago
parent
commit
d60dc1a0b3
  1. 18
      builtin/repack.c
  2. 10
      t/t7700-repack.sh

18
builtin/repack.c

@ -89,6 +89,17 @@ static void remove_pack_on_signal(int signo) @@ -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) @@ -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;


10
t/t7700-repack.sh

@ -239,4 +239,14 @@ test_expect_success 'bitmaps can be disabled on bare repos' ' @@ -239,4 +239,14 @@ test_expect_success 'bitmaps can be disabled on bare repos' '
test -z "$bitmap"
'

test_expect_success 'no bitmaps created if .keep files present' '
pack=$(ls bare.git/objects/pack/*.pack) &&
test_path_is_file "$pack" &&
keep=${pack%.pack}.keep &&
>"$keep" &&
git -C bare.git repack -ad &&
find bare.git/objects/pack/ -type f -name "*.bitmap" >actual &&
test_must_be_empty actual
'

test_done

Loading…
Cancel
Save