New Features
- add
adjust_shared_repository_permissions()Apply the compact signed encoding ofcore.sharedRepositoryto post-umask file
permissions. Positive modes add bits, negative modes replace Unix permission
bits while retaining unrelated mode bits, and non-Unix platforms leave
permissions unchanged.
Bug Fixes
-
revalidate cached terminal entries before reusing them
Address
GHSA-6p9q-f2xg-6pr5. A path previously used as a leading
directory could remain cached as one after the caller requested it as
a terminal entry. Replacing that entry could then invalidate the cache's
assumption without triggering validation on a subsequent descent.Remove directory delegate state whenever a cached component becomes the
requested terminal entry, and validate every terminal request with its
current mode. Callers can replace the terminal entry without a separate
cache-invalidation step. Shared leading directories remain cached: sibling
traversal adds no directory checks, and descending through a replaced
terminal revalidates only that component.Regression coverage checks forced and ordinary checkout, initial and
incremental destinations, nested prefixes, preservation of external files
and directories, mode-dependent terminal validation, delegate error
recovery, and directory-cache call counts. The checkout regression failed
before the fix and passes with it. Probe the checkout test filesystem in
a disposable directory instead of shared Git metadata, removing the
now-unusedgix-discovertest dependency.Git reference:
v2.56.0-rc1at
12cb6293d6288865c1a133cf22accbaf99d13eb6, especially
t/t2006-checkout-index-basic.shandsymlinks.c. Git commit
684dd4c2b414bcf648505e74498a608f28de4592likewise preserves leading-path
caching while invalidating directory knowledge on replacement.
Changed (BREAKING)
-
migrate errors to gix-error
-
raise MSRV to Rust 1.88
The newly published
dua-core3.3 release used by linked-worktree removal
requires Rust 1.88, so raise every workspace crate and the advertised badge
together.Keep the MSRV checks buildable by selecting the latest
sysinfoandrusqlite
release lines that support Rust 1.88.
Commit Statistics
- 12 commits contributed to the release over the course of 33 calendar days.
- 34 days passed between releases.
- 4 commits were understood as conventional.
- 0 issues like '(#ID)' were seen in commit messages
Commit Details
view details
- Uncategorized
- Merge pull request #2847 from GitoxideLabs/gix-error-completion (6356013)
- Merge pull request #3006 from GitoxideLabs/gix-fs-fix (d51b6cc)
- Revalidate cached terminal entries before reusing them (b624983)
- Merge pull request #2989 from GitoxideLabs/error-conversion-review (4b9ff51)
- Migrate errors to gix-error (5f86a92)
- Merge pull request #2949 from GitoxideLabs/error-conversion-review (a095334)
- Raise MSRV to Rust 1.88 (4b42e0c)
- Merge pull request #2929 from GitoxideLabs/config-refresh (b14028d)
- Add
adjust_shared_repository_permissions()(f77eaad) - Merge pull request #2955 from GitoxideLabs/transport-url-encoding (7e35849)
- Release gix-path v0.12.6, gix-error v0.3.2, gix-command v0.10.1, gix-transport v0.59.2 (888677a)
- Merge pull request #2933 from GitoxideLabs/report-august (b8914ff)