From: Junio C Hamano Date: Wed, 24 Jun 2026 20:21:08 +0000 (-0700) Subject: Merge branch 'ps/setup-drop-global-state' into jch X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=590b96fbeb2c583a4fc202971a85af3b9d01df87;p=thirdparty%2Fgit.git Merge branch 'ps/setup-drop-global-state' into jch Continuation of "setup.c" refactoring to drop remaining global state (`git_work_tree_cfg`, `is_bare_repository_cfg`). The most notable outcome is that `is_bare_repository()` has been updated to no longer implicitly rely on `the_repository`. * ps/setup-drop-global-state: treewide: drop USE_THE_REPOSITORY_VARIABLE environment: stop using `the_repository` in `is_bare_repository()` environment: split up concerns of `is_bare_repository_cfg` builtin/init: stop modifying `is_bare_repository_cfg` setup: remove global `git_work_tree_cfg` variable builtin/init: simplify logic to configure worktree builtin/init: stop modifying global `git_work_tree_cfg` variable --- 590b96fbeb2c583a4fc202971a85af3b9d01df87 diff --cc environment.c index ff862dccf9,bf20953415..8f0c1c4f25 --- a/environment.c +++ b/environment.c @@@ -46,7 -48,7 +46,6 @@@ int has_symlinks = 1 int minimum_abbrev = 4, default_abbrev = -1; int ignore_case; int assume_unchanged; - int is_bare_repository_cfg = -1; /* unspecified */ -int warn_on_object_refname_ambiguity = 1; char *git_commit_encoding; char *git_log_output_encoding; char *apply_default_whitespace; @@@ -126,26 -132,12 +122,26 @@@ const char *getenv_safe(struct strvec * return argv->v[argv->nr - 1]; } - int is_bare_repository(void) + int is_bare_repository(struct repository *repo) { /* if core.bare is not 'false', let's see if there is a work tree */ - return is_bare_repository_cfg && !repo_get_work_tree(the_repository); + return repo->bare_cfg && !repo_get_work_tree(repo); } +int repo_protect_ntfs(struct repository *repo) +{ + return (repo && repo->initialized) ? + repo_config_values(repo)->protect_ntfs : + PROTECT_NTFS_DEFAULT; +} + +int repo_protect_hfs(struct repository *repo) +{ + return (repo && repo->initialized) ? + repo_config_values(repo)->protect_hfs : + PROTECT_HFS_DEFAULT; +} + int have_git_dir(void) { return startup_info->have_repository diff --cc environment.h index 0ccf0a0e6e,164a55df2c..8aaedcfea3 --- a/environment.h +++ b/environment.h @@@ -135,16 -123,10 +135,18 @@@ int git_default_config(const char *, co int git_default_core_config(const char *var, const char *value, const struct config_context *ctx, void *cb); +/* + * Getters for the `protect_hfs` and `protect_ntfs` fields of `struct repo_config_values`. + * They check `repo->initialized` to prevent calling `repo_config_values()` + * before the repository setup is fully complete or in non-git environments. + */ +int repo_protect_hfs(struct repository *repo); +int repo_protect_ntfs(struct repository *repo); + void repo_config_values_init(struct repo_config_values *cfg); + int is_bare_repository(struct repository *repo); + /* * TODO: All the below state either explicitly or implicitly relies on * `the_repository`. We should eventually get rid of these and make the @@@ -167,12 -149,10 +169,8 @@@ */ int have_git_dir(void); - extern int is_bare_repository_cfg; - int is_bare_repository(void); - extern char *git_work_tree_cfg; - /* Environment bits from configuration mechanism */ extern int trust_executable_bit; -extern int trust_ctime; -extern int check_stat; extern int has_symlinks; extern int minimum_abbrev, default_abbrev; extern int ignore_case;