read-cache: use freshen_shared_index() in read_index_from()

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>

Christian Couder committed Mar 6, 2017 at 10:42 UTC c3a008250272295271584c6303463ffb9b055cbc
2 files changed +8 -7
read-cache.c
+1
@@ -1727,6 +1727,7 @@ int read_index_from(struct index_state *istate, const char *path)
1727 base_sha1_hex, base_path,
1728 sha1_to_hex(split_index->base->sha1));
1729
1730 + freshen_shared_index(base_sha1_hex, 0);
1731 merge_base_index(istate);
1732 post_read_index_from(istate);
1733 return ret;
t/t1700-split-index.sh
+7 -7
@@ -313,17 +313,17 @@ test_expect_success 'check splitIndex.maxPercentChange set to 0' '
313 test_expect_success 'shared index files expire after 2 weeks by default' '
314 : >ten &&
315 git update-index --add ten &&
316 - test $(ls .git/sharedindex.* | wc -l) -gt 1 &&
316 + test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
317 just_under_2_weeks_ago=$((5-14*86400)) &&
318 test-chmtime =$just_under_2_weeks_ago .git/sharedindex.* &&
319 : >eleven &&
320 git update-index --add eleven &&
321 - test $(ls .git/sharedindex.* | wc -l) -gt 1 &&
321 + test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
322 just_over_2_weeks_ago=$((-1-14*86400)) &&
323 test-chmtime =$just_over_2_weeks_ago .git/sharedindex.* &&
324 : >twelve &&
325 git update-index --add twelve &&
326 - test $(ls .git/sharedindex.* | wc -l) = 1
326 + test $(ls .git/sharedindex.* | wc -l) -le 2
327 '
328
329 test_expect_success 'check splitIndex.sharedIndexExpire set to 16 days' '
@@ -331,12 +331,12 @@ test_expect_success 'check splitIndex.sharedIndexExpire set to 16 days' '
331 test-chmtime =$just_over_2_weeks_ago .git/sharedindex.* &&
332 : >thirteen &&
333 git update-index --add thirteen &&
334 - test $(ls .git/sharedindex.* | wc -l) -gt 1 &&
334 + test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
335 just_over_16_days_ago=$((-1-16*86400)) &&
336 test-chmtime =$just_over_16_days_ago .git/sharedindex.* &&
337 : >fourteen &&
338 git update-index --add fourteen &&
339 - test $(ls .git/sharedindex.* | wc -l) = 1
339 + test $(ls .git/sharedindex.* | wc -l) -le 2
340 '
341
342 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"
345 test-chmtime =$just_10_years_ago .git/sharedindex.* &&
346 : >fifteen &&
347 git update-index --add fifteen &&
348 - test $(ls .git/sharedindex.* | wc -l) -gt 1 &&
348 + test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
349 git config splitIndex.sharedIndexExpire now &&
350 just_1_second_ago=-1 &&
351 test-chmtime =$just_1_second_ago .git/sharedindex.* &&
352 : >sixteen &&
353 git update-index --add sixteen &&
354 - test $(ls .git/sharedindex.* | wc -l) = 1
354 + test $(ls .git/sharedindex.* | wc -l) -le 2
355 '
356
357 test_done