repack: disable bitmaps-by-default if .keep files exist
authorEric Wong <e@80x24.org>
Sat, 29 Jun 2019 19:13:59 +0000 (19:13 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 1 Jul 2019 17:29:08 +0000 (10:29 -0700)
commit7328482253469923baddb6a3061a16fb613cd523
treef56d28a57bf3ade592248b15b81d115db1dc922e
parentd4316604f85c99a503832128a6dfb0f5ea101298
repack: disable bitmaps-by-default if .keep files exist

Bitmaps aren't useful with multiple packs, and users with
.keep files ended up with redundant packs when bitmaps
got enabled by default in bare repos.

So detect when .keep files exist and stop enabling bitmaps
by default in that case.

Wasteful (but otherwise harmless) race conditions with .keep files
documented by Jeff King still apply and there's a chance we'd
still end up with redundant data on the FS:

  https://public-inbox.org/git/20190623224244.GB1100@sigill.intra.peff.net/

v2: avoid subshell in test case, be multi-index aware

Fixes: 36eba0323d3288a8 ("repack: enable bitmaps by default on bare repos")
Signed-off-by: Eric Wong <e@80x24.org>
Helped-by: Jeff King <peff@peff.net>
Reported-by: Janos Farkas <chexum@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/repack.c
t/t7700-repack.sh