Merge branch 'sg/maint-gitdir-in-subdir' into maint
authorJunio C Hamano <gitster@pobox.com>
Fri, 6 Feb 2009 02:05:43 +0000 (18:05 -0800)
committerJunio C Hamano <gitster@pobox.com>
Fri, 6 Feb 2009 02:05:43 +0000 (18:05 -0800)
* sg/maint-gitdir-in-subdir:
Fix gitdir detection when in subdir of gitdir

setup.c
t/t1501-worktree.sh
diff --git a/setup.c b/setup.c
index 6b277b6a11d3d8419d79a93628b9923001a065a6..dfda532adc16f5e6d25d7cfc5add3e0e2b6a5209 100644 (file)
--- a/setup.c
+++ b/setup.c
@@ -456,7 +456,11 @@ const char *setup_git_directory_gently(int *nongit_ok)
                        inside_git_dir = 1;
                        if (!work_tree_env)
                                inside_work_tree = 0;
-                       setenv(GIT_DIR_ENVIRONMENT, ".", 1);
+                       if (offset != len) {
+                               cwd[offset] = '\0';
+                               setenv(GIT_DIR_ENVIRONMENT, cwd, 1);
+                       } else
+                               setenv(GIT_DIR_ENVIRONMENT, ".", 1);
                        check_repository_format_gently(nongit_ok);
                        return NULL;
                }
index f6a6f839a18de4c3775ea965f164d0d20f2bbe9b..27dc6c55d5f50a7fd30388b60230482bad6be2d8 100755 (executable)
@@ -92,6 +92,13 @@ cd sub/dir || exit 1
 test_rev_parse 'in repo.git/sub/dir' false true true sub/dir/
 cd ../../../.. || exit 1
 
+test_expect_success 'detecting gitdir when cwd is in a subdir of gitdir' '
+       (expected=$(pwd)/repo.git &&
+        cd repo.git/refs &&
+        unset GIT_DIR &&
+        test "$expected" = "$(git rev-parse --git-dir)")
+'
+
 test_expect_success 'repo finds its work tree' '
        (cd repo.git &&
         : > work/sub/dir/untracked &&