repack: enable bitmaps by default on bare repos

A typical use case for bare repos is for serving clones and
fetches to clients.  Enable bitmaps by default on bare repos to
make it easier for admins to host git repos in a performant way.

Signed-off-by: Eric Wong <e@80x24.org>
Helped-by: Jeff King <peff@peff.net>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Eric Wong 2019-03-14 09:12:54 +00:00 коммит произвёл Junio C Hamano
Родитель 0e94f7aa73
Коммит 36eba0323d
3 изменённых файлов: 23 добавлений и 3 удалений

Просмотреть файл

@ -24,4 +24,4 @@ repack.writeBitmaps::
packs created for clones and fetches, at the cost of some disk
space and extra time spent on the initial repack. This has
no effect if multiple packfiles are created.
Defaults to false.
Defaults to true on bare repos, false otherwise.

Просмотреть файл

@ -14,7 +14,7 @@
static int delta_base_offset = 1;
static int pack_kept_objects = -1;
static int write_bitmaps;
static int write_bitmaps = -1;
static int use_delta_islands;
static char *packdir, *packtmp;
@ -343,6 +343,9 @@ 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)
write_bitmaps = (pack_everything & ALL_INTO_ONE) &&
is_bare_repository();
if (pack_kept_objects < 0)
pack_kept_objects = write_bitmaps;

Просмотреть файл

@ -221,5 +221,22 @@ test_expect_success 'repack --keep-pack' '
)
'
test_done
test_expect_success 'bitmaps are created by default in bare repos' '
git clone --bare .git bare.git &&
git -C bare.git repack -ad &&
bitmap=$(ls bare.git/objects/pack/*.bitmap) &&
test_path_is_file "$bitmap"
'
test_expect_success 'incremental repack does not complain' '
git -C bare.git repack -q 2>repack.err &&
test_must_be_empty repack.err
'
test_expect_success 'bitmaps can be disabled on bare repos' '
git -c repack.writeBitmaps=false -C bare.git repack -ad &&
bitmap=$(ls bare.git/objects/pack/*.bitmap 2>/dev/null || :) &&
test -z "$bitmap"
'
test_done