]> git.ipfire.org Git - thirdparty/git.git/commitdiff
builtin/init: stop modifying `is_bare_repository_cfg`
authorPatrick Steinhardt <ps@pks.im>
Thu, 11 Jun 2026 06:44:42 +0000 (08:44 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 11 Jun 2026 12:05:54 +0000 (05:05 -0700)
We're modifying `is_bare_repository_cfg` in "builtin/init.c" to indicate
whether the newly created repository is supposed to be a bare repository
or not.

This is ultimately unnecessary though: when initializing the repository
in `init_db()` we eventually set `is_bare_repository_cfg = !work_tree`,
so all that matters is whether or not we have a working tree configured,
and the working tree is set up in the non-bare in "builtin/init.c".

Stop modifying the global variable in "builtin/init.c" in favor of a
local variable.

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

index b4343c2804457038fa1602f09ec50293116ef8c3..52aa92fb0a4c87276a4770c9db56c92d0db47e37 100644 (file)
@@ -81,6 +81,7 @@ int cmd_init_db(int argc,
        const char *template_dir = NULL;
        char *template_dir_to_free = NULL;
        unsigned int flags = 0;
+       int bare = is_bare_repository_cfg;
        const char *object_format = NULL;
        const char *ref_format = NULL;
        const char *initial_branch = NULL;
@@ -90,7 +91,7 @@ int cmd_init_db(int argc,
        const struct option init_db_options[] = {
                OPT_STRING(0, "template", &template_dir, N_("template-directory"),
                                N_("directory from which templates will be used")),
-               OPT_SET_INT(0, "bare", &is_bare_repository_cfg,
+               OPT_SET_INT(0, "bare", &bare,
                                N_("create a bare repository"), 1),
                {
                        .type = OPTION_CALLBACK,
@@ -116,7 +117,7 @@ int cmd_init_db(int argc,
 
        argc = parse_options(argc, argv, prefix, init_db_options, init_db_usage, 0);
 
-       if (real_git_dir && is_bare_repository_cfg == 1)
+       if (real_git_dir && bare == 1)
                die(_("options '%s' and '%s' cannot be used together"), "--separate-git-dir", "--bare");
 
        if (real_git_dir && !is_absolute_path(real_git_dir))
@@ -160,7 +161,7 @@ int cmd_init_db(int argc,
        } else if (0 < argc) {
                usage(init_db_usage[0]);
        }
-       if (is_bare_repository_cfg == 1) {
+       if (bare == 1) {
                char *cwd = xgetcwd();
                setenv(GIT_DIR_ENVIRONMENT, cwd, argc > 0);
                free(cwd);
@@ -187,7 +188,7 @@ int cmd_init_db(int argc,
         */
        git_dir = xstrdup_or_null(getenv(GIT_DIR_ENVIRONMENT));
        work_tree = xstrdup_or_null(getenv(GIT_WORK_TREE_ENVIRONMENT));
-       if ((!git_dir || is_bare_repository_cfg == 1) && work_tree)
+       if ((!git_dir || bare == 1) && work_tree)
                die(_("%s (or --work-tree=<directory>) not allowed without "
                          "specifying %s (or --git-dir=<directory>)"),
                    GIT_WORK_TREE_ENVIRONMENT,
@@ -224,10 +225,10 @@ int cmd_init_db(int argc,
                strbuf_release(&sb);
        }
 
-       if (is_bare_repository_cfg < 0)
-               is_bare_repository_cfg = guess_repository_type(git_dir);
+       if (bare < 0)
+               bare = guess_repository_type(git_dir);
 
-       if (!is_bare_repository_cfg) {
+       if (!bare) {
                const char *git_dir_parent = strrchr(git_dir, '/');
 
                if (work_tree) {