]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'ps/setup-drop-global-state' into ps/setup-split-discovery-and-setup
authorJunio C Hamano <gitster@pobox.com>
Tue, 30 Jun 2026 18:28:10 +0000 (11:28 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 30 Jun 2026 18:28:10 +0000 (11:28 -0700)
* 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

1  2 
attr.c
builtin/gc.c
builtin/repo.c
environment.c
environment.h
mailmap.c
refs/files-backend.c
refs/reftable-backend.c
repository.c
setup.c

diff --cc attr.c
Simple merge
diff --cc builtin/gc.c
Simple merge
diff --cc builtin/repo.c
Simple merge
diff --cc environment.c
index ba2c60103ff51c5e50a6c0e08635c9a3453eead6,bf209534153b2b7ba57aa0034ca8f2721e0b5d87..bee2cd621ac9b505b829792f6b818cf2fd85dfbb
@@@ -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 6f182869558395caeaf6f0595c331564ccf0d8c7,164a55df2ca225c50b1759d33d822a8cc20fe96f..f5b9b33c901d0adda3a0cc650a76de13290cbcd3
@@@ -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 mailmap.c
Simple merge
Simple merge
index d74131a5ae0c19e2a29daded9f2689badd64e0cc,c151d331e758366d663dc4f9fab61d6beeb14935..212408c769c5e6563982fa69ebf6ac93f67def4c
@@@ -1441,26 -1417,6 +1439,26 @@@ static int transaction_update_cmp(cons
        return strcmp(update_a->update->refname, update_b->update->refname);
  }
  
-               log_refs_cfg = is_bare_repository() ? LOG_REFS_NONE : LOG_REFS_NORMAL;
 +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(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 repository.c
Simple merge
diff --cc setup.c
index 592753457c29a45bad019be5b492e1ddac2369f4,65f4ac95a8dd8c1e534fa8094e36819965c827ef..951ab9eedbe158eaf982e193b399110996c191f0
+++ 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);
        }