path: root/builtin/gc.c
diff options
authorDavid Turner <>2016-12-28 22:45:41 (GMT)
committerJunio C Hamano <>2016-12-29 21:45:35 (GMT)
commitbdf56de896b48d6fe3ad90e92138b5fd6579748d (patch)
tree1be4c69a1fa9b5222cd4cd2ba8a1d27626a394b7 /builtin/gc.c
parentc3808ca6982b0ad7ee9b87eca9b50b9a24ec08b0 (diff)
auto gc: don't write bitmaps for incremental repacks
When git gc --auto does an incremental repack of loose objects, we do not expect to be able to write a bitmap; it is very likely that objects in the new pack will have references to objects outside of the pack. So we shouldn't try to write a bitmap, because doing so will likely issue a warning. This warning was making its way into gc.log. When the gc.log was present, future auto gc runs would refuse to run. Patch by Jeff King. Bug report, test, and commit message by David Turner. Signed-off-by: David Turner <> Signed-off-by: Jeff King <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'builtin/gc.c')
1 files changed, 8 insertions, 1 deletions
diff --git a/builtin/gc.c b/builtin/gc.c
index 069950d..331f219 100644
--- a/builtin/gc.c
+++ b/builtin/gc.c
@@ -191,6 +191,11 @@ static void add_repack_all_option(void)
+static void add_repack_incremental_option(void)
+ argv_array_push(&repack, "--no-write-bitmap-index");
static int need_to_gc(void)
@@ -208,7 +213,9 @@ static int need_to_gc(void)
if (too_many_packs())
- else if (!too_many_loose_objects())
+ else if (too_many_loose_objects())
+ add_repack_incremental_option();
+ else
return 0;
if (run_hook_le(NULL, "pre-auto-gc", NULL))