From: Junio C Hamano Date: Tue, 30 Jun 2026 18:28:10 +0000 (-0700) Subject: Merge branch 'ps/setup-drop-global-state' into ps/setup-split-discovery-and-setup X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4f71cef8dd3e7bb4eac33c100defb7e6dc373ee9;p=thirdparty%2Fgit.git Merge branch 'ps/setup-drop-global-state' into ps/setup-split-discovery-and-setup * 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 --- 4f71cef8dd3e7bb4eac33c100defb7e6dc373ee9 diff --cc environment.c index ba2c60103f,bf20953415..bee2cd621a --- 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; diff --cc environment.h index 6f18286955,164a55df2c..f5b9b33c90 --- a/environment.h +++ b/environment.h @@@ -157,12 -149,10 +159,8 @@@ int is_bare_repository(struct repositor */ 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; diff --cc refs/reftable-backend.c index d74131a5ae,c151d331e7..212408c769 --- a/refs/reftable-backend.c +++ b/refs/reftable-backend.c @@@ -1441,26 -1417,6 +1439,26 @@@ static int transaction_update_cmp(cons return strcmp(update_a->update->refname, update_b->update->refname); } +static int should_write_log(struct reftable_ref_store *refs, const char *refname) +{ + enum log_refs_config log_refs_cfg = reftable_be_write_options(refs)->log_all_ref_updates; + if (log_refs_cfg == LOG_REFS_UNSET) - log_refs_cfg = is_bare_repository() ? LOG_REFS_NONE : LOG_REFS_NORMAL; ++ log_refs_cfg = is_bare_repository(refs->base.repo) ? LOG_REFS_NONE : LOG_REFS_NORMAL; + + switch (log_refs_cfg) { + case LOG_REFS_NONE: + return refs_reflog_exists(&refs->base, refname); + case LOG_REFS_ALWAYS: + return 1; + case LOG_REFS_NORMAL: + if (should_autocreate_reflog(log_refs_cfg, refname)) + return 1; + return refs_reflog_exists(&refs->base, refname); + default: + BUG("unhandled core.logAllRefUpdates value %d", log_refs_cfg); + } +} + static int write_transaction_table(struct reftable_writer *writer, void *cb_data) { struct write_transaction_table_arg *arg = cb_data; diff --cc setup.c index 592753457c,65f4ac95a8..951ab9eedb --- a/setup.c +++ b/setup.c @@@ -2581,17 -2609,13 +2590,17 @@@ static int create_default_files(struct } repo_config_set(repo, "core.filemode", filemode ? "true" : "false"); - if (is_bare_repository()) + if (is_bare_repository(repo)) repo_config_set(repo, "core.bare", "true"); else { + const char *value; + repo_config_set(repo, "core.bare", "false"); + /* allow template config file to override the default */ - if (repo_settings_get_log_all_ref_updates(repo) == LOG_REFS_UNSET) + if (repo_config_get_string_tmp(repo, "core.logallrefupdates", &value)) repo_config_set(repo, "core.logallrefupdates", "true"); + if (needs_work_tree_config(original_git_dir, work_tree)) repo_config_set(repo, "core.worktree", work_tree); }