Skip to content

Fix status_file (and index/tree path handling) for non-ASCII paths - #1484

Open
jdavid wants to merge 2 commits into
masterfrom
encoding
Open

Fix status_file (and index/tree path handling) for non-ASCII paths#1484
jdavid wants to merge 2 commits into
masterfrom
encoding

Conversation

@jdavid

@jdavid jdavid commented Aug 12, 2026

Copy link
Copy Markdown
Member

Encode repository-internal paths as UTF-8 instead of filesystem encoding, and normalize to NFC on macOS to match Git's core.precomposeunicode default. status_file now also accepts raw bytes.

Add regression tests covering non-ASCII, non-breaking space, NFC/NFD, and raw bytes paths.

Related to #687

Assisted-by: Kimi Code

Encode repository-internal paths as UTF-8 instead of filesystem encoding,
and normalize to NFC on macOS to match Git's core.precomposeunicode
default. status_file now also accepts raw bytes.

Add regression tests covering non-ASCII, non-breaking space, NFC/NFD,
and raw bytes paths.

Fixes #687

Assisted-by: Kimi Code
Route TreeBuilder.insert through pgit_borrow_gitpath (like get/remove)
so all three agree on UTF-8 encoding, raw bytes input, and NFC
normalization on macOS. Previously insert used the strict "s" format
while get/remove used pgit_borrow_gitpath, so on macOS an entry inserted
with an NFD name could not be found afterwards.

Also switch tree lookups (Tree.__contains__, Tree.__getitem__ and
Tree.__truediv__, all via tree_getentry_by_path) from
pgit_borrow_fsdefault to pgit_borrow_gitpath, matching the treebuilder.

Add regression tests covering NFC, NFD and raw bytes names.

Assisted-by: Kimi Code
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant