repack: die on incremental + write-bitmap-index

The bitmap index only works for single packs, so requesting an
incremental repack with bitmap indexes makes no sense.

Signed-off-by: David Turner <dturner@twosigma.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
David Turner 2016-12-28 17:45:42 -05:00 committed by Junio C Hamano
parent bdf56de896
commit 1c409a705c
2 changed files with 12 additions and 5 deletions

View File

@ -18,6 +18,12 @@ static const char *const git_repack_usage[] = {
NULL NULL
}; };
static const char incremental_bitmap_conflict_error[] = N_(
"Incremental repacks are incompatible with bitmap indexes. Use\n"
"--no-write-bitmap-index or disable the pack.writebitmaps configuration."
);
static int repack_config(const char *var, const char *value, void *cb) static int repack_config(const char *var, const char *value, void *cb)
{ {
if (!strcmp(var, "repack.usedeltabaseoffset")) { if (!strcmp(var, "repack.usedeltabaseoffset")) {
@ -206,6 +212,9 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
if (pack_kept_objects < 0) if (pack_kept_objects < 0)
pack_kept_objects = write_bitmaps; pack_kept_objects = write_bitmaps;
if (write_bitmaps && !(pack_everything & ALL_INTO_ONE))
die(_(incremental_bitmap_conflict_error));
packdir = mkpathdup("%s/pack", get_object_directory()); packdir = mkpathdup("%s/pack", get_object_directory());
packtmp = mkpathdup("%s/.tmp-%d-pack", packdir, (int)getpid()); packtmp = mkpathdup("%s/.tmp-%d-pack", packdir, (int)getpid());

View File

@ -105,12 +105,10 @@ test_expect_success 'fetch (partial bitmap)' '
test_cmp expect actual test_cmp expect actual
' '
test_expect_success 'incremental repack cannot create bitmaps' ' test_expect_success 'incremental repack fails when bitmaps are requested' '
test_commit more-1 && test_commit more-1 &&
find .git/objects/pack -name "*.bitmap" >expect && test_must_fail git repack -d 2>err &&
git repack -d && test_i18ngrep "Incremental repacks are incompatible with bitmap" err
find .git/objects/pack -name "*.bitmap" >actual &&
test_cmp expect actual
' '
test_expect_success 'incremental repack can disable bitmaps' ' test_expect_success 'incremental repack can disable bitmaps' '