New Features (BREAKING)
-
add no-follow reads and recursive directory traversal
Bring file-opening and directory-traversal utilities into
gix-fsso
filesystem consumers can use a common API without requesting filesystem
features fromgix-features.Expose
open_options_no_follow()andopen_read_only_no_follow()for
Unix and Windows. The read helper returns an opened non-symlink handle or
an explicitFileOrSymlink::Symlinkoutcome, 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::DirEntrynow uses thegix-fstype instead
of re-exporting thegix-featurestype, changing its type identity while
retaining its methods and normalization behavior.Add the optional
walkdirfeature with depth limits, hidden entries,
configurable link following, and Git's ordering of files and directories.
Traversal remains serial regardless of the requestedParallelism.
Basic file access andread_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()andadjust_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()
anddir::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)