You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit a5163e8
Browse filesBrowse the repository at this point in the historyBrowse files
fix(refs): preserve non-UTF-8 names at native API boundaries (#2064)
Packed-reference enumeration now delegates to Git/Gix and no longer has the
original UTF-8 file-reader failure. However, tag paths retain undecodable
bytes as surrogate escapes, and passing those strings back into GixPython
raises `UnicodeEncodeError` before validation or reference lookup.
Make `safe_encode()` the byte-preserving inverse of `safe_decode()`. Use it
at the supported Gix reference validation, lookup, revision, reflog and edit
boundaries, and when serializing Git reference transactions. GixPython 0.3.0
accepts bytes in these APIs, so this fixes adapter conversion without adding
a reference-storage implementation or requiring an upstream workaround.
Add a scripted packed-ref fixture with lightweight and annotated non-UTF-8
tag names for both SHA-1 and SHA-256. Git 2.54.0's `for-each-ref` supplies
the reference inventory; `git-for-each-ref.adoc` documents the `refname` and
`objectname` projections used for the baseline. The regression checks byte
round trips, tag/commit resolution, CLI parity and absence of CLI fallback
during native resolution. Packed records are fixture inputs because APFS
rejects those bytes in loose reference filenames.
Validation: 42 reference tests and 24 subtests passed with CLI; 144 reference
and backend tests and 24 subtests passed with Gix. Ruff, ShellCheck and mypy
passed. Windows behavior will be validated by CI.
0 commit comments