]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'gt/core-bare-in-templates'
authorJunio C Hamano <gitster@pobox.com>
Thu, 14 Mar 2024 21:05:24 +0000 (14:05 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 14 Mar 2024 21:05:24 +0000 (14:05 -0700)
Code simplification.

* gt/core-bare-in-templates:
  setup: remove unnecessary variable

setup.c
t/t1301-shared-repo.sh
t/t5606-clone-options.sh

diff --git a/setup.c b/setup.c
index e3b76e84b5b8676fdd23b7709800e3df24d8c08d..b2d9371ddc229f9999121f12d8cd9096a8d554d6 100644 (file)
--- a/setup.c
+++ b/setup.c
@@ -1968,7 +1968,6 @@ void create_reference_database(unsigned int ref_storage_format,
 static int create_default_files(const char *template_path,
                                const char *original_git_dir,
                                const struct repository_format *fmt,
-                               int prev_bare_repository,
                                int init_shared_repository)
 {
        struct stat st1;
@@ -2003,34 +2002,8 @@ static int create_default_files(const char *template_path,
         */
        if (init_shared_repository != -1)
                set_shared_repository(init_shared_repository);
-       /*
-        * TODO: heed core.bare from config file in templates if no
-        *       command-line override given
-        */
-       is_bare_repository_cfg = prev_bare_repository || !work_tree;
-       /* TODO (continued):
-        *
-        * Unfortunately, the line above is equivalent to
-        *    is_bare_repository_cfg = !work_tree;
-        * which ignores the config entirely even if no `--[no-]bare`
-        * command line option was present.
-        *
-        * To see why, note that before this function, there was this call:
-        *    prev_bare_repository = is_bare_repository()
-        * expanding the right hand side:
-        *                 = is_bare_repository_cfg && !get_git_work_tree()
-        *                 = is_bare_repository_cfg && !work_tree
-        * note that the last simplification above is valid because nothing
-        * calls repo_init() or set_git_work_tree() between any of the
-        * relevant calls in the code, and thus the !get_git_work_tree()
-        * calls will return the same result each time.  So, what we are
-        * interested in computing is the right hand side of the line of
-        * code just above this comment:
-        *     prev_bare_repository || !work_tree
-        *        = is_bare_repository_cfg && !work_tree || !work_tree
-        *        = !work_tree
-        * because "A && !B || !B == !B" for all boolean values of A & B.
-        */
+
+       is_bare_repository_cfg = !work_tree;
 
        /*
         * We would have created the above under user's umask -- under
@@ -2182,7 +2155,6 @@ int init_db(const char *git_dir, const char *real_git_dir,
        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;
-       int prev_bare_repository;
 
        if (real_git_dir) {
                struct stat st;
@@ -2208,7 +2180,6 @@ int init_db(const char *git_dir, const char *real_git_dir,
 
        safe_create_dir(git_dir, 0);
 
-       prev_bare_repository = is_bare_repository();
 
        /* Check to see if the repository version is right.
         * Note that a newly created repository does not have
@@ -2221,8 +2192,7 @@ int init_db(const char *git_dir, const char *real_git_dir,
        validate_ref_storage_format(&repo_fmt, ref_storage_format);
 
        reinit = create_default_files(template_dir, original_git_dir,
-                                     &repo_fmt, prev_bare_repository,
-                                     init_shared_repository);
+                                     &repo_fmt, init_shared_repository);
 
        /*
         * Now that we have set up both the hash algorithm and the ref storage
index b1eb5c01b899daf9a0075393e3e79d47da069d5d..29cf8a966133a7851722c8cdf828fe3c524a12ec 100755 (executable)
@@ -52,7 +52,7 @@ test_expect_success 'shared=all' '
        test 2 = $(git config core.sharedrepository)
 '
 
-test_expect_failure 'template can set core.bare' '
+test_expect_success 'template cannot set core.bare' '
        test_when_finished "rm -rf subdir" &&
        test_when_finished "rm -rf templates" &&
        test_config core.bare true &&
@@ -60,18 +60,7 @@ test_expect_failure 'template can set core.bare' '
        mkdir -p templates/ &&
        cp .git/config templates/config &&
        git init --template=templates subdir &&
-       test_path_exists subdir/HEAD
-'
-
-test_expect_success 'template can set core.bare but overridden by command line' '
-       test_when_finished "rm -rf subdir" &&
-       test_when_finished "rm -rf templates" &&
-       test_config core.bare true &&
-       umask 0022 &&
-       mkdir -p templates/ &&
-       cp .git/config templates/config &&
-       git init --no-bare --template=templates subdir &&
-       test_path_exists subdir/.git/HEAD
+       test_path_is_missing subdir/HEAD
 '
 
 test_expect_success POSIXPERM 'update-server-info honors core.sharedRepository' '
index a400bcca622f464f13fe4f0a57c4d44ec8dd827b..e93e0d0cc397a323bae99e9f92ee5d02cb026f2b 100755 (executable)
@@ -120,14 +120,14 @@ test_expect_success 'prefers -c config over --template config' '
 
 '
 
-test_expect_failure 'prefers --template config even for core.bare' '
+test_expect_success 'ignore --template config for core.bare' '
 
        template="$TRASH_DIRECTORY/template-with-bare-config" &&
        mkdir "$template" &&
        git config --file "$template/config" core.bare true &&
        git clone "--template=$template" parent clone-bare-config &&
-       test "$(git -C clone-bare-config config --local core.bare)" = "true" &&
-       test_path_is_file clone-bare-config/HEAD
+       test "$(git -C clone-bare-config config --local core.bare)" = "false" &&
+       test_path_is_missing clone-bare-config/HEAD
 '
 
 test_expect_success 'prefers config "clone.defaultRemoteName" over default' '