Skip to content

Commit

Permalink
Merge branch 'tb/precompose-getcwd' into maint-2.45
Browse files Browse the repository at this point in the history
We forgot to normalize the result of getcwd() to NFC on macOS where
all other paths are normalized, which has been corrected.  This still
does not address the case where core.precomposeUnicode configuration
is not defined globally.

* tb/precompose-getcwd:
  macOS: ls-files path fails if path of workdir is NFD
  • Loading branch information
gitster committed Jul 2, 2024
2 parents 3e50dfd + 71fa8d2 commit df98236
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 2 deletions.
2 changes: 1 addition & 1 deletion setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ static int abspath_part_inside_repo(char *path)
size_t wtlen;
char *path0;
int off;
const char *work_tree = get_git_work_tree();
const char *work_tree = precompose_string_if_needed(get_git_work_tree());
struct strbuf realpath = STRBUF_INIT;

if (!work_tree)
Expand Down
39 changes: 38 additions & 1 deletion t/t3910-mac-os-precompose.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,27 @@ Alongc=$Alongc$Alongc$Alongc$Alongc$Alongc #50 Byte
Alongc=$Alongc$Alongc$Alongc$Alongc$Alongc #250 Byte
Alongc=$Alongc$AEligatu$AEligatu #254 Byte


ls_files_nfc_nfd () {
test_when_finished "git config --global --unset core.precomposeunicode" &&
prglbl=$1
prlocl=$2
aumlcreat=$3
aumllist=$4
git config --global core.precomposeunicode $prglbl &&
(
rm -rf .git &&
mkdir -p "somewhere/$prglbl/$prlocl/$aumlcreat" &&
mypwd=$PWD &&
cd "somewhere/$prglbl/$prlocl/$aumlcreat" &&
git init &&
git config core.precomposeunicode $prlocl &&
git --literal-pathspecs ls-files "$mypwd/somewhere/$prglbl/$prlocl/$aumllist" 2>err &&
>expected &&
test_cmp expected err
)
}

test_expect_success "detect if nfd needed" '
precomposeunicode=$(git config core.precomposeunicode) &&
test "$precomposeunicode" = true &&
Expand Down Expand Up @@ -211,13 +232,29 @@ test_expect_success "unicode decomposed: git restore -p . " '
'

# Test if the global core.precomposeunicode stops autosensing
# Must be the last test case
test_expect_success "respect git config --global core.precomposeunicode" '
test_when_finished "git config --global --unset core.precomposeunicode" &&
git config --global core.precomposeunicode true &&
rm -rf .git &&
git init &&
precomposeunicode=$(git config core.precomposeunicode) &&
test "$precomposeunicode" = "true"
'

test_expect_success "ls-files false false nfd nfd" '
ls_files_nfc_nfd false false $Adiarnfd $Adiarnfd
'

test_expect_success "ls-files false true nfd nfd" '
ls_files_nfc_nfd false true $Adiarnfd $Adiarnfd
'

test_expect_success "ls-files true false nfd nfd" '
ls_files_nfc_nfd true false $Adiarnfd $Adiarnfd
'

test_expect_success "ls-files true true nfd nfd" '
ls_files_nfc_nfd true true $Adiarnfd $Adiarnfd
'

test_done

0 comments on commit df98236

Please sign in to comment.