Struct Gitignore

struct Gitignore { ... }

Gitignore is a matcher for the globs in one or more gitignore files in the same directory.

Implementations

impl Gitignore

fn new<P: AsRef<Path>>(gitignore_path: P) -> (Gitignore, Option<Error>)

Creates a new gitignore matcher from the gitignore file path given.

If it's desirable to include multiple gitignore files in a single matcher, or read gitignore globs from a different source, then use GitignoreBuilder.

This always returns a valid matcher, even if it's empty. In particular, a Gitignore file can be partially valid, e.g., when one glob is invalid but the rest aren't.

Note that I/O errors are ignored. For more granular control over errors, use GitignoreBuilder.

fn global() -> (Gitignore, Option<Error>)

Creates a new gitignore matcher from the global ignore file, if one exists.

The global config file path is specified by git's core.excludesFile config option.

Git's config file location is $HOME/.gitconfig. If $HOME/.gitconfig does not exist or does not specify core.excludesFile, then $XDG_CONFIG_HOME/git/ignore is read. If $XDG_CONFIG_HOME is not set or is empty, then $HOME/.config/git/ignore is used instead.

fn empty() -> Gitignore

Creates a new empty gitignore matcher that never matches anything.

Its path is empty.

fn path(self: &Self) -> &Path

Returns the directory containing this gitignore matcher.

All matches are done relative to this path.

fn is_empty(self: &Self) -> bool

Returns true if and only if this gitignore has zero globs, and therefore never matches any file path.

fn len(self: &Self) -> usize

Returns the total number of globs, which should be equivalent to num_ignores + num_whitelists.

fn num_ignores(self: &Self) -> u64

Returns the total number of ignore globs.

fn num_whitelists(self: &Self) -> u64

Returns the total number of whitelisted globs.

fn matched<P: AsRef<Path>>(self: &Self, path: P, is_dir: bool) -> Match<&Glob>

Returns whether the given path (file or directory) matched a pattern in this gitignore matcher.

is_dir should be true if the path refers to a directory and false otherwise.

The given path is matched relative to the path given when building the matcher. Specifically, before matching path, its prefix (as determined by a common suffix of the directory containing this gitignore) is stripped. If there is no common suffix/prefix overlap, then path is assumed to be relative to this matcher.

fn matched_path_or_any_parents<P: AsRef<Path>>(self: &Self, path: P, is_dir: bool) -> Match<&Glob>

Returns whether the given path (file or directory, and expected to be under the root) or any of its parent directories (up to the root) matched a pattern in this gitignore matcher.

NOTE: This method is more expensive than walking the directory hierarchy top-to-bottom and matching the entries. But, is easier to use in cases when a list of paths are available without a hierarchy.

is_dir should be true if the path refers to a directory and false otherwise.

The given path is matched relative to the path given when building the matcher. Specifically, before matching path, its prefix (as determined by a common suffix of the directory containing this gitignore) is stripped. If there is no common suffix/prefix overlap, then path is assumed to be relative to this matcher.

Panics

This method panics if the given file path is not under the root path of this matcher.

impl Clone for Gitignore

fn clone(self: &Self) -> Gitignore

impl Debug for Gitignore

fn fmt(self: &Self, f: &mut $crate::fmt::Formatter<'_>) -> $crate::fmt::Result

impl Freeze for Gitignore

impl RefUnwindSafe for Gitignore

impl Send for Gitignore

impl Sync for Gitignore

impl Unpin for Gitignore

impl UnwindSafe for Gitignore

impl<T> Any for Gitignore

fn type_id(self: &Self) -> TypeId

impl<T> Borrow for Gitignore

fn borrow(self: &Self) -> &T

impl<T> BorrowMut for Gitignore

fn borrow_mut(self: &mut Self) -> &mut T

impl<T> CloneToUninit for Gitignore

unsafe fn clone_to_uninit(self: &Self, dest: *mut u8)

impl<T> From for Gitignore

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> Pointable for Gitignore

unsafe fn init(init: <T as Pointable>::Init) -> usize
unsafe fn deref<'a>(ptr: usize) -> &'a T
unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
unsafe fn drop(ptr: usize)

impl<T> ToOwned for Gitignore

fn to_owned(self: &Self) -> T
fn clone_into(self: &Self, target: &mut T)

impl<T, U> Into for Gitignore

fn into(self: Self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

impl<T, U> TryFrom for Gitignore

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

impl<T, U> TryInto for Gitignore

fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>