The setting "sparse.expectFilesOutsideOfPatterns" is stored in the global variable 'sparse_expect_files_outside_of_patterns' and allows files marked with the `SKIP_WORKTREE` bit to be present in the worktree. As this setting is closely related to repository, remove the global variable and store the setting in the `struct repo_settings` along with other sparse checkout related settings. This also allows us to remove the definition '#define USE_THE_REPOSITORY_VARIABLE' from the file 'sparse-index.c'. This change is part of an ongoing effort to eliminate global variables, improve modularity and help libify the codebase. Mentored-by: Christian Couder <christian.couder@xxxxxxxxx> Mentored-by: Ghanshyam Thakkar <shyamthakkar001@xxxxxxxxx> Signed-off-by: Ayush Chandekar <ayu.chandekar@xxxxxxxxx> --- config.c | 14 -------------- environment.c | 1 - environment.h | 2 -- repo-settings.c | 1 + repo-settings.h | 1 + sparse-index.c | 3 +-- 6 files changed, 3 insertions(+), 19 deletions(-) diff --git a/config.c b/config.c index e13f7d8fe8..ea6de843f7 100644 --- a/config.c +++ b/config.c @@ -1631,17 +1631,6 @@ static int git_default_core_config(const char *var, const char *value, return platform_core_config(var, value, ctx, cb); } -static int git_default_sparse_config(const char *var, const char *value) -{ - if (!strcmp(var, "sparse.expectfilesoutsideofpatterns")) { - sparse_expect_files_outside_of_patterns = git_config_bool(var, value); - return 0; - } - - /* Add other config variables here and to Documentation/config/sparse.adoc. */ - return 0; -} - static int git_default_i18n_config(const char *var, const char *value) { if (!strcmp(var, "i18n.commitencoding")) { @@ -1803,9 +1792,6 @@ int git_default_config(const char *var, const char *value, return 0; } - if (starts_with(var, "sparse.")) - return git_default_sparse_config(var, value); - /* Add other config variables here and to Documentation/config.adoc. */ return 0; } diff --git a/environment.c b/environment.c index cd5ec5c736..cf52fa9617 100644 --- a/environment.c +++ b/environment.c @@ -63,7 +63,6 @@ enum push_default_type push_default = PUSH_DEFAULT_UNSPECIFIED; #endif enum object_creation_mode object_creation_mode = OBJECT_CREATION_MODE; int grafts_keep_true_parents; -int sparse_expect_files_outside_of_patterns; int merge_log_config = -1; int precomposed_unicode = -1; /* see probe_utf8_pathname_composition() */ unsigned long pack_size_limit_cfg; diff --git a/environment.h b/environment.h index 5642156d3d..aaa3025df3 100644 --- a/environment.h +++ b/environment.h @@ -159,8 +159,6 @@ extern int precomposed_unicode; extern int protect_hfs; extern int protect_ntfs; -extern int sparse_expect_files_outside_of_patterns; - enum rebase_setup_type { AUTOREBASE_NEVER = 0, AUTOREBASE_LOCAL, diff --git a/repo-settings.c b/repo-settings.c index 505e402276..5e0ba4ae23 100644 --- a/repo-settings.c +++ b/repo-settings.c @@ -86,6 +86,7 @@ void prepare_repo_settings(struct repository *r) repo_cfg_bool(r, "core.usereplacerefs", &r->settings.read_replace_refs, 1); repo_cfg_bool(r, "core.sparsecheckout", &r->settings.sparse_checkout, 0); repo_cfg_bool(r, "core.sparsecheckoutcone", &r->settings.sparse_checkout_cone, 0); + repo_cfg_bool(r, "sparse.expectfilesoutsideofpatterns", &r->settings.sparse_expect_files_outside_of_patterns, 0); /* * The GIT_TEST_MULTI_PACK_INDEX variable is special in that diff --git a/repo-settings.h b/repo-settings.h index 1b43c4029c..695c0fd0ce 100644 --- a/repo-settings.h +++ b/repo-settings.h @@ -71,6 +71,7 @@ struct repo_settings { int sparse_checkout; int sparse_checkout_cone; + int sparse_expect_files_outside_of_patterns; }; #define REPO_SETTINGS_INIT { \ .shared_repository = -1, \ diff --git a/sparse-index.c b/sparse-index.c index 3b51ea46e3..552d26adc1 100644 --- a/sparse-index.c +++ b/sparse-index.c @@ -1,4 +1,3 @@ -#define USE_THE_REPOSITORY_VARIABLE #define DISABLE_SIGN_COMPARE_WARNINGS #include "git-compat-util.h" @@ -669,7 +668,7 @@ static void clear_skip_worktree_from_present_files_full(struct index_state *ista void clear_skip_worktree_from_present_files(struct index_state *istate) { if (!istate->repo->settings.sparse_checkout || - sparse_expect_files_outside_of_patterns) + istate->repo->settings.sparse_expect_files_outside_of_patterns) return; if (clear_skip_worktree_from_present_files_sparse(istate)) { -- 2.49.0