Browse Source

Merge branch 'js/abspath-part-inside-repo'

On a case-insensitive filesystem, we failed to compare the part of
the path that is above the worktree directory in an absolute
pathname, which has been corrected.

* js/abspath-part-inside-repo:
  abspath_part_inside_repo: respect core.ignoreCase
maint
Junio C Hamano 6 years ago
parent
commit
ff09c9e5ba
  1. 6
      setup.c
  2. 7
      t/t3700-add.sh

6
setup.c

@ -39,7 +39,7 @@ static int abspath_part_inside_repo(char *path) @@ -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) @@ -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) @@ -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;
}

7
t/t3700-add.sh

@ -402,4 +402,11 @@ test_expect_success 'all statuses changed in folder if . is given' ' @@ -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

Loading…
Cancel
Save