diff options
author | Junio C Hamano <gitster@pobox.com> | 2018-01-21 21:14:54 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-01-21 21:14:54 -0800 |
commit | 59c276cf4da0705064c32c9dba54baefa282ea55 (patch) | |
tree | e3ec15ed6268a645fac86b7fbe7008bb8c9cac37 | |
parent | 298d861208d71089dd308761ae96738e81ad3e68 (diff) | |
parent | 8279ed033f703d4115bee620dccd32a9ec94d9aa (diff) | |
download | git-master.tar.gz git-master.tar.xz |
* maint:
Git 2.16.1
t5601-clone: test case-conflicting files on case-insensitive filesystem
repository: pre-initialize hash algo pointer
-rw-r--r-- | Documentation/RelNotes/2.16.1.txt | 11 | ||||
-rw-r--r-- | repository.c | 2 | ||||
-rwxr-xr-x | t/t5601-clone.sh | 17 |
3 files changed, 29 insertions, 1 deletions
diff --git a/Documentation/RelNotes/2.16.1.txt b/Documentation/RelNotes/2.16.1.txt new file mode 100644 index 000000000..66e64361f --- /dev/null +++ b/Documentation/RelNotes/2.16.1.txt @@ -0,0 +1,11 @@ +Git v2.16.1 Release Notes +========================= + +Fixes since v2.16 +----------------- + + * "git clone" segfaulted when cloning a project that happens to + track two paths that differ only in case on a case insensitive + filesystem. + +Does not contain any other documentation updates or code clean-ups. diff --git a/repository.c b/repository.c index 998413b8b..f66fcb134 100644 --- a/repository.c +++ b/repository.c @@ -5,7 +5,7 @@ /* The main repository */ static struct repository the_repo = { - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &the_index, NULL, 0, 0 + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &the_index, &hash_algos[GIT_HASH_SHA1], 0, 0 }; struct repository *the_repository = &the_repo; diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh index 0f895478f..8c437bf87 100755 --- a/t/t5601-clone.sh +++ b/t/t5601-clone.sh @@ -611,4 +611,21 @@ test_expect_success 'GIT_TRACE_PACKFILE produces a usable pack' ' git -C replay.git index-pack -v --stdin <tmp.pack ' +hex2oct () { + perl -ne 'printf "\\%03o", hex for /../g' +} + +test_expect_success 'clone on case-insensitive fs' ' + git init icasefs && + ( + cd icasefs + o=$(git hash-object -w --stdin </dev/null | hex2oct) && + t=$(printf "100644 X\0${o}100644 x\0${o}" | + git hash-object -w -t tree --stdin) && + c=$(git commit-tree -m bogus $t) && + git update-ref refs/heads/bogus $c && + git clone -b bogus . bogus + ) +' + test_done |