]> git.ipfire.org Git - thirdparty/git.git/commitdiff
refs: remove remaining uses of `the_repository`
authorPatrick Steinhardt <ps@pks.im>
Thu, 16 Jul 2026 05:33:07 +0000 (07:33 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 16 Jul 2026 14:40:22 +0000 (07:40 -0700)
There are still a couple of callsites that use `the_repository`. Convert
these to instead use a repository injected by the caller. This allows us
to remove `USE_THE_REPOSITORY_VARIABLE`.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
branch.c
builtin/branch.c
builtin/check-ref-format.c
builtin/checkout.c
builtin/merge.c
builtin/worktree.c
refs.c
refs.h

index b2ac403b197363cb1aac495c434bed22d25e4152..4f38905bad928de3f69c57ae3a6873cf6ec23426 100644 (file)
--- a/branch.c
+++ b/branch.c
@@ -372,7 +372,7 @@ int read_branch_desc(struct strbuf *buf, const char *branch_name)
  */
 int validate_branchname(const char *name, struct strbuf *ref)
 {
-       if (check_branch_ref(ref, name)) {
+       if (check_branch_ref(the_repository, ref, name)) {
                int code = die_message(_("'%s' is not a valid branch name"), name);
                advise_if_enabled(ADVICE_REF_SYNTAX,
                                  _("See 'git help check-ref-format'"));
index c8fddf7f946781fd4923c07bc46507d609e299b4..be26ec0750a7e8d6032d669f9e9d72494a0dcf54 100644 (file)
@@ -259,7 +259,8 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
                char *target = NULL;
                int flags = 0;
 
-               copy_branchname(&bname, argv[i], allowed_interpret);
+               copy_branchname(the_repository, &bname,
+                               argv[i], allowed_interpret);
                free(name);
                name = mkpathdup(fmt, bname.buf);
 
@@ -581,7 +582,7 @@ static void copy_or_rename_branch(const char *oldname, const char *newname, int
        int recovery = 0, oldref_usage = 0;
        struct worktree **worktrees = get_worktrees(the_repository);
 
-       if (check_branch_ref(&oldref, oldname)) {
+       if (check_branch_ref(the_repository, &oldref, oldname)) {
                /*
                 * Bad name --- this could be an attempt to rename a
                 * ref that we used to allow to be created by accident.
@@ -898,7 +899,8 @@ int cmd_branch(int argc,
                                die(_("cannot give description to detached HEAD"));
                        branch_name = head;
                } else if (argc == 1) {
-                       copy_branchname(&buf, argv[0], INTERPRET_BRANCH_LOCAL);
+                       copy_branchname(the_repository, &buf, argv[0],
+                                       INTERPRET_BRANCH_LOCAL);
                        branch_name = buf.buf;
                } else {
                        die(_("cannot edit description of more than one branch"));
@@ -941,7 +943,8 @@ int cmd_branch(int argc,
                if (!argc)
                        branch = branch_get(NULL);
                else if (argc == 1) {
-                       copy_branchname(&buf, argv[0], INTERPRET_BRANCH_LOCAL);
+                       copy_branchname(the_repository, &buf, argv[0],
+                                       INTERPRET_BRANCH_LOCAL);
                        branch = branch_get(buf.buf);
                } else
                        die(_("too many arguments to set new upstream"));
@@ -971,7 +974,8 @@ int cmd_branch(int argc,
                if (!argc)
                        branch = branch_get(NULL);
                else if (argc == 1) {
-                       copy_branchname(&buf, argv[0], INTERPRET_BRANCH_LOCAL);
+                       copy_branchname(the_repository, &buf, argv[0],
+                                       INTERPRET_BRANCH_LOCAL);
                        branch = branch_get(buf.buf);
                } else
                        die(_("too many arguments to unset upstream"));
index e42b0444ead269478d8953910669e20e71abcacf..fd1c9c0e0c8e6062355ee3d5891e1c29ebe9e34c 100644 (file)
@@ -45,7 +45,7 @@ static int check_ref_format_branch(const char *arg)
        int nongit;
 
        setup_git_directory_gently(the_repository, &nongit);
-       if (check_branch_ref(&sb, arg) ||
+       if (check_branch_ref(the_repository, &sb, arg) ||
            !skip_prefix(sb.buf, "refs/heads/", &name))
                die("'%s' is not a valid branch name", arg);
        printf("%s\n", name);
index aee84ca89742b0a755fc436749c8942d43d94066..55e3a89a852712c69e109886459f517dca0ef6b1 100644 (file)
@@ -805,7 +805,7 @@ static void setup_branch_path(struct branch_info *branch)
                           &branch->oid, &branch->refname, 0))
                repo_get_oid_committish(the_repository, branch->name, &branch->oid);
 
-       copy_branchname(&buf, branch->name, INTERPRET_BRANCH_LOCAL);
+       copy_branchname(the_repository, &buf, branch->name, INTERPRET_BRANCH_LOCAL);
        if (strcmp(buf.buf, branch->name)) {
                free(branch->name);
                branch->name = xstrdup(buf.buf);
index 5b46a596f0bdf462270e0027edaf3c318dff9bac..58d1b7bb07d90f8ca0357a0b7b7d8f3041359f64 100644 (file)
@@ -553,7 +553,7 @@ static void merge_name(const char *remote, struct strbuf *msg)
        char *found_ref = NULL;
        int len, early;
 
-       copy_branchname(&bname, remote, 0);
+       copy_branchname(the_repository, &bname, remote, 0);
        remote = bname.buf;
 
        oidclr(&branch_head, the_repository->hash_algo);
index 0689b3d3e079fb70bed6f64dccf5e77df167b848..6397e149a8a1fdfe6922e66f4fba07c087dc2af6 100644 (file)
@@ -481,7 +481,7 @@ static int add_worktree(const char *path, const char *refname,
        worktrees = NULL;
 
        /* is 'refname' a branch or commit? */
-       if (!opts->detach && !check_branch_ref(&symref, refname) &&
+       if (!opts->detach && !check_branch_ref(the_repository, &symref, refname) &&
            refs_ref_exists(get_main_ref_store(the_repository), symref.buf)) {
                is_branch = 1;
                if (!opts->force)
@@ -650,7 +650,7 @@ static void print_preparing_worktree_line(int detach,
                fprintf_ln(stderr, _("Preparing worktree (new branch '%s')"), new_branch);
        } else {
                struct strbuf s = STRBUF_INIT;
-               if (!detach && !check_branch_ref(&s, branch) &&
+               if (!detach && !check_branch_ref(the_repository, &s, branch) &&
                    refs_ref_exists(get_main_ref_store(the_repository), s.buf))
                        fprintf_ln(stderr, _("Preparing worktree (checking out '%s')"),
                                  branch);
@@ -772,7 +772,7 @@ static char *dwim_branch(const char *path, char **new_branch)
        char *branchname = xstrndup(s, n);
        struct strbuf ref = STRBUF_INIT;
 
-       branch_exists = !check_branch_ref(&ref, branchname) &&
+       branch_exists = !check_branch_ref(the_repository, &ref, branchname) &&
                        refs_ref_exists(get_main_ref_store(the_repository),
                                        ref.buf);
        strbuf_release(&ref);
@@ -869,7 +869,7 @@ static int add(int ac, const char **av, const char *prefix,
                new_branch = new_branch_force;
 
                if (!opts.force &&
-                   !check_branch_ref(&symref, new_branch) &&
+                   !check_branch_ref(the_repository, &symref, new_branch) &&
                    refs_ref_exists(get_main_ref_store(the_repository), symref.buf))
                        die_if_checked_out(symref.buf, 0);
                strbuf_release(&symref);
diff --git a/refs.c b/refs.c
index d9957a266c59ab874d9bd0bb7b68a9495394ad26..92d5df5b71fa4b14fd646a03ec06d7f032a3abf1 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -2,8 +2,6 @@
  * The backend-independent part of the reference module.
  */
 
-#define USE_THE_REPOSITORY_VARIABLE
-
 #include "git-compat-util.h"
 #include "abspath.h"
 #include "advice.h"
@@ -744,14 +742,15 @@ static char *substitute_branch_name(struct repository *r,
        return NULL;
 }
 
-void copy_branchname(struct strbuf *sb, const char *name,
+void copy_branchname(struct repository *repo,
+                    struct strbuf *sb, const char *name,
                     enum interpret_branch_kind allowed)
 {
        int len = strlen(name);
        struct interpret_branch_name_options options = {
                .allowed = allowed
        };
-       int used = repo_interpret_branch_name(the_repository, name, len, sb,
+       int used = repo_interpret_branch_name(repo, name, len, sb,
                                              &options);
 
        if (used < 0)
@@ -759,10 +758,10 @@ void copy_branchname(struct strbuf *sb, const char *name,
        strbuf_add(sb, name + used, len - used);
 }
 
-int check_branch_ref(struct strbuf *sb, const char *name)
+int check_branch_ref(struct repository *repo, struct strbuf *sb, const char *name)
 {
        if (startup_info->have_repository)
-               copy_branchname(sb, name, INTERPRET_BRANCH_LOCAL);
+               copy_branchname(repo, sb, name, INTERPRET_BRANCH_LOCAL);
        else
                strbuf_addstr(sb, name);
 
@@ -3326,9 +3325,9 @@ done:
        return ret;
 }
 
-static int has_worktrees(void)
+static int has_worktrees(struct repository *repo)
 {
-       struct worktree **worktrees = get_worktrees(the_repository);
+       struct worktree **worktrees = get_worktrees(repo);
        int ret = 0;
        size_t i;
 
@@ -3373,12 +3372,8 @@ int repo_migrate_ref_storage_format(struct repository *repo,
         * Worktrees complicate the migration because every worktree has a
         * separate ref storage. While it should be feasible to implement, this
         * is pushed out to a future iteration.
-        *
-        * TODO: we should really be passing the caller-provided repository to
-        * `has_worktrees()`, but our worktree subsystem doesn't yet support
-        * that.
         */
-       if (has_worktrees()) {
+       if (has_worktrees(repo)) {
                strbuf_addstr(errbuf, "migrating repositories with worktrees is not supported yet");
                ret = -1;
                goto done;
@@ -3503,7 +3498,7 @@ int repo_migrate_ref_storage_format(struct repository *repo,
         * repository format so that clients will use the new ref store.
         * We also need to swap out the repository's main ref store.
         */
-       initialize_repository_version(the_repository, hash_algo_by_ptr(repo->hash_algo), format, 1);
+       initialize_repository_version(repo, hash_algo_by_ptr(repo->hash_algo), format, 1);
 
        /*
         * Unset the old ref store and release it. `get_main_ref_store()` will
diff --git a/refs.h b/refs.h
index a381022c77065a21d3a1142248ec5bf4604c93f2..9979446d15fd3bee28863b86c3bf9bde1d8e46aa 100644 (file)
--- a/refs.h
+++ b/refs.h
@@ -234,7 +234,8 @@ char *repo_default_branch_name(struct repository *r, int quiet);
  * If "allowed" is non-zero, restrict the set of allowed expansions. See
  * repo_interpret_branch_name() for details.
  */
-void copy_branchname(struct strbuf *sb, const char *name,
+void copy_branchname(struct repository *repo,
+                    struct strbuf *sb, const char *name,
                     enum interpret_branch_kind allowed);
 
 /*
@@ -243,7 +244,7 @@ void copy_branchname(struct strbuf *sb, const char *name,
  *
  * The return value is "0" if the result is valid, and "-1" otherwise.
  */
-int check_branch_ref(struct strbuf *sb, const char *name);
+int check_branch_ref(struct repository *repo, struct strbuf *sb, const char *name);
 
 /*
  * Similar for a tag name in refs/tags/.