From: Tian Yuchen Date: Fri, 19 Jun 2026 15:51:51 +0000 (+0800) Subject: environment: move ignore_case into repo_config_values X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5abac96b4be55831c9aa5135ded30a907f76018c;p=thirdparty%2Fgit.git environment: move ignore_case into repo_config_values The 'core.ignorecase' configuration which is stored as the global variable 'ignore_case' acts as a core filesystem capability flag. Move this global variable into 'struct repo_config_values' to tie it to the specific repository instance it was read from. This reduces global state and aligns with the ongoing libification effort. To ensure code readability, the getter function 'repo_ignore_case()' is introduced. Mentored-by: Christian Couder Mentored-by: Ayush Chandekar Mentored-by: Olamide Caleb Bello Signed-off-by: Tian Yuchen Signed-off-by: Junio C Hamano --- diff --git a/environment.c b/environment.c index fc3ed8bb1c..bfa3cb3045 100644 --- a/environment.c +++ b/environment.c @@ -142,6 +142,13 @@ int is_bare_repository(void) return is_bare_repository_cfg && !repo_get_work_tree(the_repository); } +int repo_ignore_case(struct repository *repo) +{ + return (repo && repo->initialized) ? + repo_config_values(repo)->ignore_case : + 0; +} + int have_git_dir(void) { return startup_info->have_repository @@ -720,5 +727,6 @@ void repo_config_values_init(struct repo_config_values *cfg) { cfg->attributes_file = NULL; cfg->apply_sparse_checkout = 0; + cfg->ignore_case = 0; cfg->branch_track = BRANCH_TRACK_REMOTE; } diff --git a/environment.h b/environment.h index 9eb97b3869..39a8bf0b49 100644 --- a/environment.h +++ b/environment.h @@ -91,6 +91,7 @@ struct repo_config_values { /* section "core" config values */ char *attributes_file; int apply_sparse_checkout; + int ignore_case; /* section "branch" config values */ enum branch_track branch_track; @@ -123,6 +124,13 @@ int git_default_config(const char *, const char *, int git_default_core_config(const char *var, const char *value, const struct config_context *ctx, void *cb); +/* + * Getter for the `ignore_case` field of `struct repo_config_values`. + * It checks `repo->initialized` to prevent calling repo_config_values()` + * before the repository setup is fully complete or in non-git environments. + */ +int repo_ignore_case(struct repository *repo); + void repo_config_values_init(struct repo_config_values *cfg); /*