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

[PATCH v5 22/22] Documentation/git-update-index: explain splitIndex.*

From
Christian Couder <christian.couder@gmail.com>
Date
Mar 6, 2017, 09:42 UTC
Message-ID
<20170306094203.28250-23-chriscool@tuxfamily.org>
In-Reply-To
<20170306094203.28250-1-chriscool@tuxfamily.org>
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 Documentation/config.txt           |  2 +-
 Documentation/git-update-index.txt | 37 +++++++++++++++++++++++++++++--------
 2 files changed, 30 insertions(+), 9 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 2afd5d982b..24ed9c476d 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -2873,7 +2873,7 @@ splitIndex.sharedIndexExpire::
 	The default value is "2.weeks.ago".
 	Note that a shared index file is considered modified (for the
 	purpose of expiration) each time a new split-index file is
-	created based on it.
+	either created based on it or read from it.
 	See linkgit:git-update-index[1].
 
 status.relativePaths::
diff --git a/Documentation/git-update-index.txt b/Documentation/git-update-index.txt
index e091b2a409..1579abf3c3 100644
--- a/Documentation/git-update-index.txt
+++ b/Documentation/git-update-index.txt
@@ -163,14 +163,10 @@ may not support it yet.
 
 --split-index::
 --no-split-index::
-	Enable or disable split index mode. If enabled, the index is
-	split into two files, $GIT_DIR/index and $GIT_DIR/sharedindex.<SHA-1>.
-	Changes are accumulated in $GIT_DIR/index while the shared
-	index file contains all index entries stays unchanged. If
-	split-index mode is already enabled and `--split-index` is
-	given again, all changes in $GIT_DIR/index are pushed back to
-	the shared index file. This mode is designed for very large
-	indexes that take a significant amount of time to read or write.
+	Enable or disable split index mode. If split-index mode is
+	already enabled and `--split-index` is given again, all
+	changes in $GIT_DIR/index are pushed back to the shared index
+	file.
 +
 These options take effect whatever the value of the `core.splitIndex`
 configuration variable (see linkgit:git-config[1]). But a warning is
@@ -394,6 +390,31 @@ Although this bit looks similar to assume-unchanged bit, its goal is
 different from assume-unchanged bit's. Skip-worktree also takes
 precedence over assume-unchanged bit when both are set.
 
+Split index
+-----------
+
+This mode is designed for repositories with very large indexes, and
+aims at reducing the time it takes to repeatedly write these indexes.
+
+In this mode, the index is split into two files, $GIT_DIR/index and
+$GIT_DIR/sharedindex.<SHA-1>. Changes are accumulated in
+$GIT_DIR/index, the split index, while the shared index file contains
+all index entries and stays unchanged.
+
+All changes in the split index are pushed back to the shared index
+file when the number of entries in the split index reaches a level
+specified by the splitIndex.maxPercentChange config variable (see
+linkgit:git-config[1]).
+
+Each time a new shared index file is created, the old shared index
+files are deleted if their modification time is older than what is
+specified by the splitIndex.sharedIndexExpire config variable (see
+linkgit:git-config[1]).
+
+To avoid deleting a shared index file that is still used, its
+modification time is updated to the current time everytime a new split
+index based on the shared index file is either created or read from.
+
 Untracked cache
 ---------------
 
-- 
2.12.0.206.g74921e51d6.dirty
Previous: Christian CouderNext: Christian Couder
Message 5 of 23 in “Add configuration options for split-index”
  1. 00/22 Add configuration options for split-indexChristian Couder, Mar 6, 2017
  2. 11/22 read-cache: regenerate shared index if necessaryChristian Couder, Mar 6, 2017
  3. 17/22 read-cache: unlink old sharedindex filesChristian Couder, Mar 6, 2017
  4. 09/22 Documentation/git-update-index: talk about core.splitIndex config varChristian Couder, Mar 6, 2017
  5. 22/22 Documentation/git-update-index: explain splitIndex.*Christian Couder, Mar 6, 2017
  6. 14/22 sha1_file: make check_and_freshen_file() non staticChristian Couder, Mar 6, 2017
  7. 20/22 read-cache: use freshen_shared_index() in read_index_from()Christian Couder, Mar 6, 2017
  8. 19/22 read-cache: refactor read_index_from()Christian Couder, Mar 6, 2017
  9. 13/22 Documentation/config: add splitIndex.maxPercentChangeChristian Couder, Mar 6, 2017
  10. 10/22 config: add git_config_get_max_percent_split_change()Christian Couder, Mar 6, 2017
  11. 06/22 update-index: warn in case of split-index incoherencyChristian Couder, Mar 6, 2017
  12. 18/22 t1700: test shared index file expirationChristian Couder, Mar 6, 2017
  13. 15/22 read-cache: touch shared index files when usedChristian Couder, Mar 6, 2017
  14. 07/22 t1700: add tests for core.splitIndexChristian Couder, Mar 6, 2017
  15. 16/22 config: add git_config_get_expiry() from gc.cChristian Couder, Mar 6, 2017
  16. 12/22 t1700: add tests for splitIndex.maxPercentChangeChristian Couder, Mar 6, 2017
  17. 04/22 split-index: add {add,remove}_split_index() functionsChristian Couder, Mar 6, 2017
  18. 21/22 Documentation/config: add splitIndex.sharedIndexExpireChristian Couder, Mar 6, 2017
  19. 02/22 t1700: change here document styleChristian Couder, Mar 6, 2017
  20. 08/22 Documentation/config: add information for core.splitIndexChristian Couder, Mar 6, 2017
  21. 05/22 read-cache: add and then use tweak_split_index()Christian Couder, Mar 6, 2017
  22. 01/22 config: mark an error message up for translationChristian Couder, Mar 6, 2017
  23. 03/22 config: add git_config_get_split_index()Christian Couder, Mar 6, 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.