pub struct WalkFsCapture { /* private fields */ }Expand description
Captures a directory tree into a BlobStore and emits a single
fs.tree.v1 blob describing the structure.
Concurrency: file content-addressing runs on a rayon thread pool. Walk
itself is single-threaded (walkdir) — we sort all entries first so the
emitted manifest is byte-identical across runs over the same tree.
Implementations§
Source§impl WalkFsCapture
impl WalkFsCapture
Sourcepub fn new_without_default_ignores(root: impl AsRef<Path>) -> Self
pub fn new_without_default_ignores(root: impl AsRef<Path>) -> Self
Build a capturer that does NOT carry the v1.0.13 default-extra
ignore set (__pycache__, .pytest_cache, *.pyc, …).
Operators who want byte-for-byte capture of every file in
the source tree (rare; CI auditing the set itself; building
a registry mirror) call this. Default callers should use
WalkFsCapture::new which has the safe set.
Sourcepub fn use_apfs_clone(self, enable: bool) -> Self
pub fn use_apfs_clone(self, enable: bool) -> Self
Toggle the macOS APFS clone fast-path. When enabled and the source is
on APFS, we clonefile(2)-clone the directory into a temp dir first
(O(1) per the APFS docs) and walk the clone — giving a stable view
without pausing the agent. Falls back to a direct walk on other
filesystems / OSes. Off by default in v1; opt in for production.
Sourcepub fn follow_symlinks(self, enable: bool) -> Self
pub fn follow_symlinks(self, enable: bool) -> Self
Follow symlinks during walk. Off by default — we capture symlinks as symlinks, not as the targets they happen to point at.
Sourcepub fn ignore(self, fragment: impl Into<String>) -> Self
pub fn ignore(self, fragment: impl Into<String>) -> Self
Add a path-fragment OR glob pattern to the ignore list.
- Plain entries (
target,__pycache__,.git/objects) are matched as path-component sequences, exactly as before. - Glob entries (anything containing
*,?,[) are matched against the relative path viaglobset::Glob. Common patterns:*.pyc,*.log,**/build/**.
v1.0.13 added glob support; segment-match semantics for plain entries are unchanged.
Sourcepub fn ignore_from(self, path: impl AsRef<Path>) -> Result<Self>
pub fn ignore_from(self, path: impl AsRef<Path>) -> Result<Self>
Read a .gitignore/.pfignore-style file and apply each
non-comment, non-empty line as an ignore entry. Lines ending
with / have the slash stripped (gitignore directory marker).
Lines starting with ! (gitignore negation) are skipped with
a tracing::warn! — this is a v1.0.13 limitation; full
gitignore semantics with negation arrive when an operator
hits the use case.
Returns Ok(self) even if the file doesn’t exist (so
.ignore_from(".pfignore") is safe to chain unconditionally).
Returns the underlying io::Error only if the file exists but
can’t be read (permissions, etc.).
Auto Trait Implementations§
impl Freeze for WalkFsCapture
impl RefUnwindSafe for WalkFsCapture
impl Send for WalkFsCapture
impl Sync for WalkFsCapture
impl Unpin for WalkFsCapture
impl UnsafeUnpin for WalkFsCapture
impl UnwindSafe for WalkFsCapture
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more