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@xxxxxxxxxxxxx> --- 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html