Skip to content

Commit

Permalink
abspath_part_inside_repo: respect core.fileMode
Browse files Browse the repository at this point in the history
If the file system is case-insensitive, we really must be careful to
ignore differences in case only.

This fixes #735

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  • Loading branch information
dscho committed Apr 12, 2017
1 parent d33e487 commit d14a8f8
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 3 deletions.
6 changes: 3 additions & 3 deletions setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,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;
Expand All @@ -56,7 +56,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;
}
Expand All @@ -65,7 +65,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;
}
Expand Down
7 changes: 7 additions & 0 deletions t/t3700-add.sh
Original file line number Diff line number Diff line change
Expand Up @@ -403,4 +403,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 MINGW 'path is case-insensitive' '
path="$(pwd -W)/BLUB" &&
touch "$path" &&
downcased="$(echo "$path" | tr A-Z a-z)" &&
git add "$downcased"
'

test_done

0 comments on commit d14a8f8

Please sign in to comment.