git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v4 20/22] read-cache: use freshen_shared_index() in read_index_from()

From
Christian Couder <christian.couder@gmail.com>
Date
Feb 27, 2017, 18:00 UTC
Message-ID
<20170227180019.18666-21-chriscool@tuxfamily.org>
In-Reply-To
<20170227180019.18666-1-chriscool@tuxfamily.org>

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>
---
 read-cache.c           |  1 +
 t/t1700-split-index.sh | 14 +++++++-------
 2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/read-cache.c b/read-cache.c
index 3ea20701a3..d1152161f6 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -1719,6 +1719,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;
diff --git a/t/t1700-split-index.sh b/t/t1700-split-index.sh
index 480d3a8dc3..ea1aeacff0 100755
--- a/t/t1700-split-index.sh
+++ b/t/t1700-split-index.sh
@@ -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
-- 
2.12.0.22.g0672473d40
Previous: Christian CouderNext: Christian Couder
Message 18 of 26 in “Add configuration options for split-index”
  1. 00/22 Add configuration options for split-indexChristian Couder, Feb 27, 2017
  2. 01/22 config: mark an error message up for translationChristian Couder, Feb 27, 2017
  3. 04/22 split-index: add {add,remove}_split_index() functionsChristian Couder, Feb 27, 2017
  4. 03/22 config: add git_config_get_split_index()Christian Couder, Feb 27, 2017
  5. 10/22 config: add git_config_get_max_percent_split_change()Christian Couder, Feb 27, 2017
  6. 11/22 read-cache: regenerate shared index if necessaryChristian Couder, Feb 27, 2017
  7. 05/22 read-cache: add and then use tweak_split_index()Christian Couder, Feb 27, 2017
  8. 06/22 update-index: warn in case of split-index incoherencyChristian Couder, Feb 27, 2017
  9. 07/22 t1700: add tests for core.splitIndexChristian Couder, Feb 27, 2017
  10. 08/22 Documentation/config: add information for core.splitIndexChristian Couder, Feb 27, 2017
  11. 09/22 Documentation/git-update-index: talk about core.splitIndex config varChristian Couder, Feb 27, 2017
  12. 02/22 t1700: change here document styleChristian Couder, Feb 27, 2017
  13. 12/22 t1700: add tests for splitIndex.maxPercentChangeChristian Couder, Feb 27, 2017
  14. 14/22 sha1_file: make check_and_freshen_file() non staticChristian Couder, Feb 27, 2017
  15. 16/22 config: add git_config_get_expiry() from gc.cChristian Couder, Feb 27, 2017
  16. 19/22 read-cache: refactor read_index_from()Christian Couder, Feb 27, 2017
  17. 22/22 Documentation/git-update-index: explain splitIndex.*Christian Couder, Feb 27, 2017
  18. 20/22 read-cache: use freshen_shared_index() in read_index_from()Christian Couder, Feb 27, 2017
  19. 18/22 t1700: test shared index file expirationChristian Couder, Feb 27, 2017
  20. 13/22 Documentation/config: add splitIndex.maxPercentChangeChristian Couder, Feb 27, 2017
  21. 15/22 read-cache: touch shared index files when usedChristian Couder, Feb 27, 2017
  22. Junio C HamanoMar 1, 2017
  23. 17/22 read-cache: unlink old sharedindex filesChristian Couder, Feb 27, 2017
  24. Junio C HamanoMar 1, 2017
  25. 21/22 Documentation/config: add splitIndex.sharedIndexExpireChristian Couder, Feb 27, 2017
  26. Junio C HamanoMar 1, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.