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

5 hours ago

New Features (BREAKING)

  • add no-follow reads and recursive directory traversal

    Bring file-opening and directory-traversal utilities into gix-fs so
    filesystem consumers can use a common API without requesting filesystem
    features from gix-features.

    Expose open_options_no_follow() and open_read_only_no_follow() for
    Unix and Windows. The read helper returns an opened non-symlink handle or
    an explicit FileOrSymlink::Symlink outcome, including for dangling
    links. Inspect opened handles before returning them and classify failed
    opens without retrying; preserve missing paths and other I/O errors.
    Protection applies to the final path component, while parent-directory
    symlinks are still followed.

    Own the Unicode-precomposition adapter shared by read_dir() and
    recursive walking. read_dir::DirEntry now uses the gix-fs type instead
    of re-exporting the gix-features type, changing its type identity while
    retaining its methods and normalization behavior.

    Add the optional walkdir feature with depth limits, hidden entries,
    configurable link following, and Git's ordering of files and directories.
    Traversal remains serial regardless of the requested Parallelism.
    Basic file access and read_dir() remain available without feature flags.

Bug Fixes (BREAKING)

  • apply Git's shared permissions for files and directories

    Shared repository modes need more than adding or replacing permission
    bits: read-only files must stay read-only, executable files need execute
    access wherever sharing grants read access, and directories need search
    bits and Git's setgid defaults, including on macOS.

    Follow Git's calc_shared_perm() and adjust_shared_perm(). Add
    set_shared_repository_permissions() to apply the policy to an existing
    path, skipping unchanged permissions and avoiding filesystem access for
    a zero policy or on non-Unix platforms.

    Require an explicit parsed sharing policy in dir::create::Iter::new()
    and dir::create::all(). Apply it only to newly created directories,
    preserving existing directory permissions. Configure retry limits with
    Iter::retries(), which updates both the original and remaining counts.
    Tests cover file modes, directory search and setgid bits, preservation of
    existing directories, and retry limits reported in errors.

Commit Statistics

  • 8 commits contributed to the release over the course of 13 calendar days.
  • 13 days passed between releases.
  • 2 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Prepare changelogs prior to release (794eeef)
    • Merge pull request #3032 from GitoxideLabs/sec-audit (1d7bac7)
    • Add no-follow reads and recursive directory traversal (fb4aada)
    • Merge pull request #3033 from GitoxideLabs/gix-cli-progress-cleanup (80f4b03)
    • Merge pull request #3022 from GitoxideLabs/release-testtools (f819565)
    • Merge pull request #2977 from GitoxideLabs/worktree-create (d9f7c85)
    • Apply Git's shared permissions for files and directories (0b2fb74)
    • Merge pull request #3020 from GitoxideLabs/report-september (5fb3dcf)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.