aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2018-01-21 21:14:54 -0800
committerJunio C Hamano <gitster@pobox.com>2018-01-21 21:14:54 -0800
commit59c276cf4da0705064c32c9dba54baefa282ea55 (patch)
treee3ec15ed6268a645fac86b7fbe7008bb8c9cac37
parent298d861208d71089dd308761ae96738e81ad3e68 (diff)
parent8279ed033f703d4115bee620dccd32a9ec94d9aa (diff)
downloadgit-master.tar.gz
git-master.tar.xz
Sync with v2.16.1HEADmaster
* 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.txt11
-rw-r--r--repository.c2
-rwxr-xr-xt/t5601-clone.sh17
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