read-cache: regenerate shared index if necessary
authorChristian Couder <christian.couder@gmail.com>
Mon, 27 Feb 2017 18:00:08 +0000 (19:00 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 1 Mar 2017 21:24:22 +0000 (13:24 -0800)
commite6a1dd77e1dbfb77cadd27274f211488a348687a
treef87008f14ef94cfd6f65fdcd5b6e73acb63396ce
parent72dcb7b3607e3349ac3367dc804b62ce1556842b
read-cache: regenerate shared index if necessary

When writing a new split-index and there is a big number of cache
entries in the split-index compared to the shared index, it is a
good idea to regenerate the shared index.

By default when the ratio reaches 20%, we will push back all
the entries from the split-index into a new shared index file
instead of just creating a new split-index file.

The threshold can be configured using the
"splitIndex.maxPercentChange" config variable.

We need to adjust the existing tests in t1700 by setting
"splitIndex.maxPercentChange" to 100 at the beginning of t1700,
as the existing tests are assuming that the shared index is
regenerated only when `git update-index --split-index` is used.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
read-cache.c
t/t1700-split-index.sh