OSDN Git Service

verify_dotfile(): reject .git case-insensitively
authorJeff King <peff@peff.net>
Mon, 24 Nov 2014 18:39:12 +0000 (13:39 -0500)
committerJunio C Hamano <gitster@pobox.com>
Wed, 17 Dec 2014 19:04:31 +0000 (11:04 -0800)
We do not allow ".git" to enter into the index as a path
component, because checking out the result to the working
tree may causes confusion for subsequent git commands.
However, on case-insensitive file systems, ".Git" or ".GIT"
is the same. We should catch and prevent those, too.

Note that technically we could allow this for repos on
case-sensitive filesystems. But there's not much point. It's
unlikely that anybody cares, and it creates a repository
that is unexpectedly non-portable to other systems.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
read-cache.c
t/t1014-read-tree-confusing.sh

index 33dd676..122be49 100644 (file)
@@ -759,9 +759,10 @@ static int verify_dotfile(const char *rest)
         * shares the path end test with the ".." case.
         */
        case 'g':
-               if (rest[1] != 'i')
+       case 'G':
+               if (rest[1] != 'i' && rest[1] != 'I')
                        break;
-               if (rest[2] != 't')
+               if (rest[2] != 't' && rest[2] != 'T')
                        break;
                rest += 2;
        /* fallthrough */
index 7b31d53..eff8aed 100755 (executable)
@@ -27,6 +27,7 @@ done <<-\EOF
 .
 ..
 .git
+.GIT
 EOF
 
 test_done