read-cache: use freshen_shared_index() in read_index_from()
authorChristian Couder <christian.couder@gmail.com>
Mon, 6 Mar 2017 09:42:01 +0000 (10:42 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 6 Mar 2017 20:09:28 +0000 (12:09 -0800)
This way a share index file will not be garbage collected if
we still read from an index it is based from.

As we need to read the current index before creating a new
one, the tests have to be adjusted, so that we don't expect
an old shared index file to be deleted right away when we
create a new one.

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
index ace3fc515b8c85c751e003b4ae66a86468cc6fdc..8cf0673adc748b68bfaabba7f9264b60a4b8da98 100644 (file)
@@ -1727,6 +1727,7 @@ int read_index_from(struct index_state *istate, const char *path)
                    base_sha1_hex, base_path,
                    sha1_to_hex(split_index->base->sha1));
 
+       freshen_shared_index(base_sha1_hex, 0);
        merge_base_index(istate);
        post_read_index_from(istate);
        return ret;
index 480d3a8dc327eec38ae47641f6d13954150705ed..ea1aeacff0f080ce57542bba5d65d301b2cc7af8 100755 (executable)
@@ -313,17 +313,17 @@ test_expect_success 'check splitIndex.maxPercentChange set to 0' '
 test_expect_success 'shared index files expire after 2 weeks by default' '
        : >ten &&
        git update-index --add ten &&
-       test $(ls .git/sharedindex.* | wc -l) -gt 1 &&
+       test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
        just_under_2_weeks_ago=$((5-14*86400)) &&
        test-chmtime =$just_under_2_weeks_ago .git/sharedindex.* &&
        : >eleven &&
        git update-index --add eleven &&
-       test $(ls .git/sharedindex.* | wc -l) -gt 1 &&
+       test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
        just_over_2_weeks_ago=$((-1-14*86400)) &&
        test-chmtime =$just_over_2_weeks_ago .git/sharedindex.* &&
        : >twelve &&
        git update-index --add twelve &&
-       test $(ls .git/sharedindex.* | wc -l) = 1
+       test $(ls .git/sharedindex.* | wc -l) -le 2
 '
 
 test_expect_success 'check splitIndex.sharedIndexExpire set to 16 days' '
@@ -331,12 +331,12 @@ test_expect_success 'check splitIndex.sharedIndexExpire set to 16 days' '
        test-chmtime =$just_over_2_weeks_ago .git/sharedindex.* &&
        : >thirteen &&
        git update-index --add thirteen &&
-       test $(ls .git/sharedindex.* | wc -l) -gt 1 &&
+       test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
        just_over_16_days_ago=$((-1-16*86400)) &&
        test-chmtime =$just_over_16_days_ago .git/sharedindex.* &&
        : >fourteen &&
        git update-index --add fourteen &&
-       test $(ls .git/sharedindex.* | wc -l) = 1
+       test $(ls .git/sharedindex.* | wc -l) -le 2
 '
 
 test_expect_success 'check splitIndex.sharedIndexExpire set to "never" and "now"' '
@@ -345,13 +345,13 @@ test_expect_success 'check splitIndex.sharedIndexExpire set to "never" and "now"
        test-chmtime =$just_10_years_ago .git/sharedindex.* &&
        : >fifteen &&
        git update-index --add fifteen &&
-       test $(ls .git/sharedindex.* | wc -l) -gt 1 &&
+       test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
        git config splitIndex.sharedIndexExpire now &&
        just_1_second_ago=-1 &&
        test-chmtime =$just_1_second_ago .git/sharedindex.* &&
        : >sixteen &&
        git update-index --add sixteen &&
-       test $(ls .git/sharedindex.* | wc -l) = 1
+       test $(ls .git/sharedindex.* | wc -l) -le 2
 '
 
 test_done