github GitoxideLabs/gitoxide gix-fs-v0.23.0
gix-fs v0.23.0

one day ago

New Features

  • add adjust_shared_repository_permissions() Apply the compact signed encoding of core.sharedRepository to 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-unused gix-discover test dependency.

    Git reference: v2.56.0-rc1 at
    12cb6293d6288865c1a133cf22accbaf99d13eb6, especially
    t/t2006-checkout-index-basic.sh and symlinks.c. Git commit
    684dd4c2b414bcf648505e74498a608f28de4592 likewise 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-core 3.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 sysinfo and rusqlite
    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)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.