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
fix: preserve repository and object paths across platforms
The Windows Python 3.8 CI job reported 42 failures and 179 setup errors.
Most submodule failures shared a discovery bug: Git resolves relative gitfile
targets using forward slashes even when the caller supplies a native Windows
path. Normalize Git-facing discovery operands with the existing platform
helper, and account for native separators in Git's worktree registry output.
Use matching `surrogateescape` codecs for Git protocol paths so undecodable
tree names round-trip without Windows filesystem encoding changing their
bytes. Verify path/stage, mode, and object ID after materializing a private
index: `git update-index --index-info` can exit successfully while dropping
Windows-incompatible names. Raise `ValueError` before publishing such an
index and document the platform restriction in `changes.rst`.
Keep unusual names in object-only tests when the host cannot represent them
in a checkout. Use native-valid paths for worktree tests, assert rejection of
unsupported index names and quoted file references, and keep full quoted
reference coverage with reftable. Fix separator and LF assumptions in config,
URL, and packed-reference fixtures. Close test-owned repositories before
submodule removal and make the fake Windows Git executable discoverable
without shell execution. Also restore root paths for `Repo.tree()` results
resolved directly from tree IDs while preserving explicit subtree paths.
Validation: 116 repository tests and 10 focused submodule tests passed;
index/helper tests passed 93 with 2 platform skips; the focused format/safety
run passed 72; config/reference/remote tests passed 57 with 24 subtests;
36 refresh tests and 2 revision regressions passed. The Git 2.52 targeted
index matrix passed 19 tests. Ruff, mypy, basedpyright, Sphinx with warnings
as errors, and `git diff --check` pass. Native Windows validation awaits CI.
0 commit comments