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

[RFC/PATCH 8/8] update-index: make core.untrackedCache a bool

From
Christian Couder <christian.couder@gmail.com>
Date
Dec 1, 2015, 20:31 UTC
Message-ID
<1449001899-18956-9-git-send-email-chriscool@tuxfamily.org>
In-Reply-To
<1449001899-18956-1-git-send-email-chriscool@tuxfamily.org>

Most features in Git can be enabled or disabled using a simple bool config variable and it would be nice if untracked cache behaved the same way.

This makes --[no-|force-]untracked-cache change the value of core.untrackedCache in the repo config file, to avoid making those options useless and because this avoids the untracked cache being disabled by a kernel change or a directory change. Of course this breaks some backward compatibility, but the simplification and increased useability is worth it.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 Documentation/git-update-index.txt | 13 ++++++-------
 builtin/update-index.c             | 10 ++++------
 config.c                           |  8 +-------
 3 files changed, 11 insertions(+), 20 deletions(-)
diff --git a/Documentation/git-update-index.txt b/Documentation/git-update-index.txt
index 5f74cc7..256b9c5 100644
--- a/Documentation/git-update-index.txt
+++ b/Documentation/git-update-index.txt
@@ -181,10 +181,11 @@ The underlying operating system and file system must change `st_mtime`
 field of a directory if files are added or deleted in that
 directory. You can test that using
 `--test-untracked-cache`. `--untracked-cache` used to test that too
-but it doesn't anymore. If you want to always enable, or always
-disable, untracked cache, you can set the `core.untrackedCache`
-configuration variable to 'true' or 'false' respectively, (see
-linkgit:git-config[1]).
+but it doesn't anymore.
++
+This sets the `core.untrackedCache` configuration variable to 'true'
+or 'false' in the repo config file, (see linkgit:git-config[1]), so
+that the untracked cache stays enabled or disabled.
 
 --test-untracked-cache::
 	Only perform tests on the working directory to make sure
@@ -194,9 +195,7 @@ linkgit:git-config[1]).
 	it.
 
 --force-untracked-cache::
-	Same as `--untracked-cache`. Note that this option cannot
-	enable untracked cache if `core.untrackedCache` configuration
-	variable is set to false (see linkgit:git-config[1]).
+	Same as `--untracked-cache`.
 
 \--::
 	Do not interpret any more arguments as options.
diff --git a/builtin/update-index.c b/builtin/update-index.c
index fb0ea3d..048c293 100644
--- a/builtin/update-index.c
+++ b/builtin/update-index.c
@@ -1111,15 +1111,13 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
 		return !test_if_untracked_cache_is_supported();
 	}
 	if (untracked_cache > 0) {
-		if (!use_untracked_cache)
-			die("core.untrackedCache is set to false; "
-			    "the untracked cache will not be enabled");
+		if (!use_untracked_cache && git_config_set("core.untrackedCache", "true"))
+			die("could not set core.untrackedCache to true");
 		add_untracked_cache();
 		fprintf(stderr, _("Untracked cache enabled for '%s'\n"), get_git_work_tree());
 	} else if (!untracked_cache) {
-		if (use_untracked_cache > 0)
-			die("core.untrackedCache is set to true; "
-			    "the untracked cache will not be disabled");
+		if (use_untracked_cache > 0 && git_config_set("core.untrackedCache", "false"))
+			die("could not set core.untrackedCache to false");
 		if (the_index.untracked) {
 			remove_untracked_cache();
 			fprintf(stderr, _("Untracked disabled\n"));
diff --git a/config.c b/config.c
index 7d50f43..f023ee7 100644
--- a/config.c
+++ b/config.c
@@ -692,13 +692,7 @@ static int git_default_core_config(const char *var, const char *value)
 		return 0;
 	}
 	if (!strcmp(var, "core.untrackedcache")) {
-		if (!strcasecmp(value, "default") || !strcasecmp(value, "check"))
-			use_untracked_cache = -1;
-		else {
-			use_untracked_cache = git_config_maybe_bool(var, value);
-			if (use_untracked_cache == -1)
-				error("unknown core.untrackedCache value '%s'; using default", value);
-		}
+		use_untracked_cache = git_config_bool(var, value);
 		return 0;
 	}
 	if (!strcmp(var, "core.checkstat")) {
-- 
2.6.3.391.g95a3a5c
Previous: Christian CouderNext: Torsten Bögershausen
Message 22 of 24 in “Untracked cache improvements”
  1. 0/8 Untracked cache improvementsChristian Couder, Dec 1, 2015
  2. 1/8 update-index: add untracked cache notificationsChristian Couder, Dec 1, 2015
  3. Duy NguyenDec 2, 2015
  4. Christian CouderDec 7, 2015
  5. Duy NguyenDec 7, 2015
  6. 2/8 update-index: add --test-untracked-cacheChristian Couder, Dec 1, 2015
  7. Duy NguyenDec 2, 2015
  8. Christian CouderDec 7, 2015
  9. 3/8 update-index: move 'uc' var declarationChristian Couder, Dec 1, 2015
  10. 4/8 dir: add add_untracked_cache()Christian Couder, Dec 1, 2015
  11. 5/8 dir: add remove_untracked_cache()Christian Couder, Dec 1, 2015
  12. 6/8 config: add core.untrackedCacheChristian Couder, Dec 1, 2015
  13. Torsten BögershausenDec 2, 2015
  14. Ævar Arnfjörð BjarmasonDec 2, 2015
  15. Torsten BögershausenDec 3, 2015
  16. Christian CouderDec 3, 2015
  17. Torsten BögershausenDec 4, 2015
  18. Christian CouderDec 4, 2015
  19. 7/8 update-index: prevent --untracked-cache from performing testsChristian Couder, Dec 1, 2015
  20. Duy NguyenDec 2, 2015
  21. Christian CouderDec 7, 2015
  22. 8/8 update-index: make core.untrackedCache a boolChristian Couder, Dec 1, 2015
  23. Torsten BögershausenDec 5, 2015
  24. Christian CouderDec 7, 2015

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.