]> git.ipfire.org Git - thirdparty/git.git/commitdiff
setup: inline `check_and_apply_repository_format()`
authorPatrick Steinhardt <ps@pks.im>
Thu, 25 Jun 2026 09:19:59 +0000 (11:19 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 25 Jun 2026 20:19:57 +0000 (13:19 -0700)
We have two callsites of `check_and_apply_repository_format()`. In a
subsequent commit we'll want to adapt one of those callsites to change
the order in which we read and apply the repository format, at which
point the helper function will not really be a good fit for us anymore.

Inline the function to both of the callsites.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
setup.c

diff --git a/setup.c b/setup.c
index b4652651dfd454b2288a3e784aa31c3158ea861f..a9db1f2c23f32a9dd7b1bba12d862e22c7e68180 100644 (file)
--- a/setup.c
+++ b/setup.c
@@ -1788,32 +1788,6 @@ int apply_repository_format(struct repository *repo,
        return 0;
 }
 
-/*
- * Check the repository format version in the path found in repo_get_git_dir(repo),
- * and die if it is a version we don't understand. Generally one would
- * set_git_dir() before calling this, and use it only for "are we in a valid
- * repo?".
- *
- * If successful and fmt is not NULL, fill fmt with data.
- */
-static void check_and_apply_repository_format(struct repository *repo,
-                                             struct repository_format *fmt,
-                                             enum apply_repository_format_flags flags)
-{
-       struct repository_format repo_fmt = REPOSITORY_FORMAT_INIT;
-       struct strbuf err = STRBUF_INIT;
-
-       if (!fmt)
-               fmt = &repo_fmt;
-
-       check_repository_format_gently(repo_get_git_dir(repo), fmt, NULL);
-       if (apply_repository_format(repo, fmt, flags, &err) < 0)
-               die("%s", err.buf);
-       startup_info->have_repository = 1;
-
-       clear_repository_format(&repo_fmt);
-}
-
 const char *enter_repo(struct repository *repo, const char *path, unsigned flags)
 {
        static struct strbuf validated_path = STRBUF_INIT;
@@ -1887,9 +1861,17 @@ const char *enter_repo(struct repository *repo, const char *path, unsigned flags
        }
 
        if (is_git_directory(".")) {
+               struct repository_format fmt = REPOSITORY_FORMAT_INIT;
+               struct strbuf err = STRBUF_INIT;
+
                set_git_dir(repo, ".", 0);
-               check_and_apply_repository_format(repo, NULL,
-                                                 APPLY_REPOSITORY_FORMAT_HONOR_ENV);
+               check_repository_format_gently(".", &fmt, NULL);
+               if (apply_repository_format(repo, &fmt, APPLY_REPOSITORY_FORMAT_HONOR_ENV, &err) < 0)
+                       die("%s", err.buf);
+               startup_info->have_repository = 1;
+
+               clear_repository_format(&fmt);
+               strbuf_release(&err);
                return path;
        }
 
@@ -2820,6 +2802,7 @@ int init_db(struct repository *repo,
        int exist_ok = flags & INIT_DB_EXIST_OK;
        char *original_git_dir = real_pathdup(git_dir, 1);
        struct repository_format repo_fmt = REPOSITORY_FORMAT_INIT;
+       struct strbuf err = STRBUF_INIT;
 
        if (real_git_dir) {
                struct stat st;
@@ -2846,9 +2829,10 @@ int init_db(struct repository *repo,
         * config file, so this will not fail.  What we are catching
         * is an attempt to reinitialize new repository with an old tool.
         */
-       check_and_apply_repository_format(repo, &repo_fmt,
-                                         APPLY_REPOSITORY_FORMAT_HONOR_ENV);
-
+       check_repository_format_gently(repo_get_git_dir(repo), &repo_fmt, NULL);
+       if (apply_repository_format(repo, &repo_fmt, APPLY_REPOSITORY_FORMAT_HONOR_ENV, &err) < 0)
+               die("%s", err.buf);
+       startup_info->have_repository = 1;
        repository_format_configure(repo, &repo_fmt, hash, ref_storage_format);
 
        /*
@@ -2904,6 +2888,7 @@ int init_db(struct repository *repo,
        }
 
        clear_repository_format(&repo_fmt);
+       strbuf_release(&err);
        free(original_git_dir);
        return 0;
 }