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 <christian.couder@gmail.com>
Mentored-by: Ayush Chandekar <ayu.chandekar@gmail.com>
Mentored-by: Olamide Caleb Bello <belkid98@gmail.com>
Signed-off-by: Tian Yuchen <cat@malon.dev>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Tian Yuchen
2026-06-19 23:51:51 +08:00
committed by Junio C Hamano
parent 9ac3f193c0
commit 5abac96b4b
2 changed files with 16 additions and 0 deletions

View File

@@ -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;
}

View File

@@ -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);
/*