git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v3 1/1] abspath_part_inside_repo: respect core.fileMode

From
Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>
Date
Dec 24, 2018, 22:56 UTC
Message-ID
<b935e11d21fc2a34953d1fc651ea09f1a4c1a769.1545692162.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.104.v3.git.gitgitgadget@gmail.com>
From: Johannes Schindelin <johannes.schindelin@gmx.de>

If the file system is case-insensitive, we really must be careful to ignore differences in case only.

This fixes https://github.com/git-for-windows/git/issues/735
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 setup.c        | 6 +++---
 t/t3700-add.sh | 7 +++++++
 2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/setup.c b/setup.c
index 1be5037f12..291bfb2128 100644
--- a/setup.c
+++ b/setup.c
@@ -39,7 +39,7 @@ static int abspath_part_inside_repo(char *path)
 	off = offset_1st_component(path);
 
 	/* check if work tree is already the prefix */
-	if (wtlen <= len && !strncmp(path, work_tree, wtlen)) {
+	if (wtlen <= len && !fspathncmp(path, work_tree, wtlen)) {
 		if (path[wtlen] == '/') {
 			memmove(path, path + wtlen + 1, len - wtlen);
 			return 0;
@@ -59,7 +59,7 @@ static int abspath_part_inside_repo(char *path)
 		path++;
 		if (*path == '/') {
 			*path = '\0';
-			if (strcmp(real_path(path0), work_tree) == 0) {
+			if (fspathcmp(real_path(path0), work_tree) == 0) {
 				memmove(path0, path + 1, len - (path - path0));
 				return 0;
 			}
@@ -68,7 +68,7 @@ static int abspath_part_inside_repo(char *path)
 	}
 
 	/* check whole path */
-	if (strcmp(real_path(path0), work_tree) == 0) {
+	if (fspathcmp(real_path(path0), work_tree) == 0) {
 		*path0 = '\0';
 		return 0;
 	}
diff --git a/t/t3700-add.sh b/t/t3700-add.sh
index 37729ba258..be582a513b 100755
--- a/t/t3700-add.sh
+++ b/t/t3700-add.sh
@@ -402,4 +402,11 @@ test_expect_success 'all statuses changed in folder if . is given' '
 	test $(git ls-files --stage | grep ^100755 | wc -l) -eq 0
 '
 
+test_expect_success CASE_INSENSITIVE_FS 'path is case-insensitive' '
+	path="$(pwd)/BLUB" &&
+	touch "$path" &&
+	downcased="$(echo "$path" | tr A-Z a-z)" &&
+	git add "$downcased"
+'
+
 test_done
-- 
gitgitgadget
Previous: Johannes Schindelin via GitGitGadgetNext: Junio C Hamano
Message 10 of 15 in “Make abspath() aware of case-insensitive filesystems”
  1. 0/1 Make abspath() aware of case-insensitive filesystemsJohannes Schindelin via GitGitGadget, Dec 21, 2018
  2. 1/1 abspath_part_inside_repo: respect core.fileModeJohannes Schindelin via GitGitGadget, Dec 21, 2018
  3. Carlo ArenasDec 22, 2018
  4. Johannes SchindelinDec 24, 2018
  5. 0/1 Make abspath() aware of case-insensitive filesystemsJohannes Schindelin via GitGitGadget, Dec 24, 2018
  6. 1/1 abspath_part_inside_repo: respect core.fileModeJohannes Schindelin via GitGitGadget, Dec 24, 2018
  7. Torsten BögershausenDec 25, 2018
  8. Johannes SchindelinJan 18, 2019
  9. 0/1 Make abspath() aware of case-insensitive filesystemsJohannes Schindelin via GitGitGadget, Dec 24, 2018
  10. 1/1 abspath_part_inside_repo: respect core.fileModeJohannes Schindelin via GitGitGadget, Dec 24, 2018
  11. Junio C HamanoDec 25, 2018
  12. Junio C HamanoDec 25, 2018
  13. Johannes SchindelinJan 18, 2019
  14. 0/1 Make abspath() aware of case-insensitive filesystemsJohannes Schindelin via GitGitGadget, Jan 18, 2019
  15. 1/1 abspath_part_inside_repo: respect core.ignoreCaseJohannes Schindelin via GitGitGadget, Jan 18, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.