Code

Do check_repository_format() early
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Thu, 29 Nov 2007 12:21:39 +0000 (19:21 +0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 30 Nov 2007 23:05:48 +0000 (15:05 -0800)
Repository version check is only performed when
setup_git_directory() is called. This makes sure
setup_git_directory_gently() does the check too.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
setup.c

diff --git a/setup.c b/setup.c
index 6f8f76958439cfcbcb1bd634e466c28e3da9fca1..8e4630ebfe2d770fc7af1c4a9b45cea58fa2480a 100644 (file)
--- a/setup.c
+++ b/setup.c
@@ -230,8 +230,14 @@ const char *setup_git_directory_gently(int *nongit_ok)
                        static char buffer[1024 + 1];
                        const char *retval;
 
-                       if (!work_tree_env)
-                               return set_work_tree(gitdirenv);
+                       if (!work_tree_env) {
+                               retval = set_work_tree(gitdirenv);
+                               /* config may override worktree
+                                * see set_work_tree comment */
+                               check_repository_format();
+                               return retval;
+                       }
+                       check_repository_format();
                        retval = get_relative_cwd(buffer, sizeof(buffer) - 1,
                                        get_git_work_tree());
                        if (!retval || !*retval)
@@ -271,6 +277,7 @@ const char *setup_git_directory_gently(int *nongit_ok)
                        if (!work_tree_env)
                                inside_work_tree = 0;
                        setenv(GIT_DIR_ENVIRONMENT, ".", 1);
+                       check_repository_format();
                        return NULL;
                }
                chdir("..");
@@ -291,6 +298,7 @@ const char *setup_git_directory_gently(int *nongit_ok)
        if (!work_tree_env)
                inside_work_tree = 1;
        git_work_tree_cfg = xstrndup(cwd, offset);
+       check_repository_format();
        if (offset == len)
                return NULL;
 
@@ -351,7 +359,6 @@ int check_repository_format(void)
 const char *setup_git_directory(void)
 {
        const char *retval = setup_git_directory_gently(NULL);
-       check_repository_format();
 
        /* If the work tree is not the default one, recompute prefix */
        if (inside_work_tree < 0) {