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

[PATCH v2 03/21] split-index: add {add,remove}_split_index() functions

From
Christian Couder <christian.couder@gmail.com>
Date
Dec 17, 2016, 14:55 UTC
Message-ID
<20161217145547.11748-4-chriscool@tuxfamily.org>
In-Reply-To
<20161217145547.11748-1-chriscool@tuxfamily.org>

Also use the functions in cmd_update_index() in builtin/update-index.c.

These functions will be used in a following commit to tweak our use of the split-index feature depending on the setting of a configuration variable.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 builtin/update-index.c | 18 ++++++------------
 split-index.c          | 22 ++++++++++++++++++++++
 split-index.h          |  2 ++
 3 files changed, 30 insertions(+), 12 deletions(-)
diff --git a/builtin/update-index.c b/builtin/update-index.c
index f3f07e7f1c..b75ea037dd 100644
--- a/builtin/update-index.c
+++ b/builtin/update-index.c
@@ -1098,18 +1098,12 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
 	}
 
 	if (split_index > 0) {
-		init_split_index(&the_index);
-		the_index.cache_changed |= SPLIT_INDEX_ORDERED;
-	} else if (!split_index && the_index.split_index) {
-		/*
-		 * can't discard_split_index(&the_index); because that
-		 * will destroy split_index->base->cache[], which may
-		 * be shared with the_index.cache[]. So yeah we're
-		 * leaking a bit here.
-		 */
-		the_index.split_index = NULL;
-		the_index.cache_changed |= SOMETHING_CHANGED;
-	}
+		if (the_index.split_index)
+			the_index.cache_changed |= SPLIT_INDEX_ORDERED;
+		else
+			add_split_index(&the_index);
+	} else if (!split_index)
+		remove_split_index(&the_index);
 
 	switch (untracked_cache) {
 	case UC_UNSPECIFIED:
diff --git a/split-index.c b/split-index.c
index 615f4cac05..f519e60f87 100644
--- a/split-index.c
+++ b/split-index.c
@@ -317,3 +317,25 @@ void replace_index_entry_in_base(struct index_state *istate,
 		istate->split_index->base->cache[new->index - 1] = new;
 	}
 }
+
+void add_split_index(struct index_state *istate)
+{
+	if (!istate->split_index) {
+		init_split_index(istate);
+		istate->cache_changed |= SPLIT_INDEX_ORDERED;
+	}
+}
+
+void remove_split_index(struct index_state *istate)
+{
+	if (istate->split_index) {
+		/*
+		 * can't discard_split_index(&the_index); because that
+		 * will destroy split_index->base->cache[], which may
+		 * be shared with the_index.cache[]. So yeah we're
+		 * leaking a bit here.
+		 */
+		istate->split_index = NULL;
+		istate->cache_changed |= SOMETHING_CHANGED;
+	}
+}
diff --git a/split-index.h b/split-index.h
index c1324f521a..df91c1bda8 100644
--- a/split-index.h
+++ b/split-index.h
@@ -31,5 +31,7 @@ void merge_base_index(struct index_state *istate);
 void prepare_to_write_split_index(struct index_state *istate);
 void finish_writing_split_index(struct index_state *istate);
 void discard_split_index(struct index_state *istate);
+void add_split_index(struct index_state *istate);
+void remove_split_index(struct index_state *istate);
 
 #endif
-- 
2.11.0.49.g2414764.dirty
Previous: Christian CouderNext: Christian Couder
Message 29 of 34 in “Add configuration options for split-index”
  1. 00/21 Add configuration options for split-indexChristian Couder, Dec 17, 2016
  2. 01/21 config: mark an error message up for translationChristian Couder, Dec 17, 2016
  3. 02/21 config: add git_config_get_split_index()Christian Couder, Dec 17, 2016
  4. Duy NguyenDec 19, 2016
  5. Christian CouderDec 26, 2016
  6. 06/21 t1700: add tests for core.splitIndexChristian Couder, Dec 17, 2016
  7. 09/21 config: add git_config_get_max_percent_split_change()Christian Couder, Dec 17, 2016
  8. 08/21 Documentation/git-update-index: talk about core.splitIndex config varChristian Couder, Dec 17, 2016
  9. 12/21 Documentation/config: add splitIndex.maxPercentChangeChristian Couder, Dec 17, 2016
  10. 14/21 read-cache: touch shared index files when usedChristian Couder, Dec 17, 2016
  11. 16/21 read-cache: unlink old sharedindex filesChristian Couder, Dec 17, 2016
  12. Duy NguyenDec 19, 2016
  13. Christian CouderDec 26, 2016
  14. 17/21 t1700: test shared index file expirationChristian Couder, Dec 17, 2016
  15. 19/21 read-cache: use freshen_shared_index() in read_index_from()Christian Couder, Dec 17, 2016
  16. 21/21 Documentation/git-update-index: explain splitIndex.*Christian Couder, Dec 17, 2016
  17. 20/21 Documentation/config: add splitIndex.sharedIndexExpireChristian Couder, Dec 17, 2016
  18. 11/21 t1700: add tests for splitIndex.maxPercentChangeChristian Couder, Dec 17, 2016
  19. 05/21 update-index: warn in case of split-index incoherencyChristian Couder, Dec 17, 2016
  20. 13/21 sha1_file: make check_and_freshen_file() non staticChristian Couder, Dec 17, 2016
  21. 18/21 read-cache: refactor read_index_from()Christian Couder, Dec 17, 2016
  22. 15/21 config: add git_config_get_expiry() from gc.cChristian Couder, Dec 17, 2016
  23. 10/21 read-cache: regenerate shared index if necessaryChristian Couder, Dec 17, 2016
  24. Duy NguyenDec 19, 2016
  25. Christian CouderDec 26, 2016
  26. 04/21 read-cache: add and then use tweak_split_index()Christian Couder, Dec 17, 2016
  27. Duy NguyenDec 19, 2016
  28. Christian CouderDec 26, 2016
  29. 03/21 split-index: add {add,remove}_split_index() functionsChristian Couder, Dec 17, 2016
  30. 07/21 Documentation/config: add information for core.splitIndexChristian Couder, Dec 17, 2016
  31. Christian CouderDec 17, 2016
  32. Duy NguyenDec 19, 2016
  33. Junio C HamanoDec 19, 2016
  34. Christian CouderDec 26, 2016

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.