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 existmaint
commit
d60dc1a0b3
|
@ -89,6 +89,17 @@ static void remove_pack_on_signal(int signo)
|
||||||
raise(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
|
* Adds all packs hex strings to the fname list, which do not
|
||||||
* have a corresponding .keep file. These packs are not to
|
* 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)))
|
(unpack_unreachable || (pack_everything & LOOSEN_UNREACHABLE)))
|
||||||
die(_("--keep-unreachable and -A are incompatible"));
|
die(_("--keep-unreachable and -A are incompatible"));
|
||||||
|
|
||||||
if (write_bitmaps < 0)
|
if (write_bitmaps < 0) {
|
||||||
write_bitmaps = (pack_everything & ALL_INTO_ONE) &&
|
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)
|
if (pack_kept_objects < 0)
|
||||||
pack_kept_objects = write_bitmaps;
|
pack_kept_objects = write_bitmaps;
|
||||||
|
|
||||||
|
|
|
@ -239,4 +239,14 @@ test_expect_success 'bitmaps can be disabled on bare repos' '
|
||||||
test -z "$bitmap"
|
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
|
test_done
|
||||||
|
|
Loading…
Reference in New Issue