pub struct Mode(_);Expand description
The kind of file of an entry.
Implementations§
source§impl Mode
impl Mode
sourcepub fn is_sparse(&self) -> bool
pub fn is_sparse(&self) -> bool
Return true if this is a sparse entry, as it points to a directory which usually isn’t what an ‘unsparse’ index tracks.
sourcepub fn change_to_match_fs(
self,
stat: &Metadata,
has_symlinks: bool,
executable_bit: bool
) -> Option<Change>
pub fn change_to_match_fs( self, stat: &Metadata, has_symlinks: bool, executable_bit: bool ) -> Option<Change>
Compares this mode to the file system version (std::fs::symlink_metadata)
and returns the change needed to update this mode to match the file.
- if
has_symlinksis false symlink entries will simply check if there is a normal file on disk - if
executable_bitis false the executable bit will not be comparedChange::ExecutableBitwill never be generated
If there is a type change then we will use whatever information is
present on the FS. Specifically if has_symlinks is false we will
never generate Change::TypeChange { new_mode: Mode::SYMLINK }. and
iff executable_bit is false we will never generate Change::TypeChange { new_mode: Mode::FILE_EXECUTABLE } (all files are assumed to be not
executable). That measn that unstaging and staging files can be a lossy
operation on such file systems.
If a directory replaced a normal file/symlink we assume that the directory is a submodule. Normal (non-submodule) directories would cause a file to be deleted from the index and should be handled before calling this function.
If the stat information belongs to something other than a normal file/ directory (like a socket) we just return an identity change (non-files can not be committed to git).
source§impl Mode
impl Mode
sourcepub const DIR: Self = _
pub const DIR: Self = _
directory (only used for sparse checkouts), equivalent to a tree, which is excluded from the index via cone-mode.
sourcepub const FILE_EXECUTABLE: Self = _
pub const FILE_EXECUTABLE: Self = _
regular file, executable
source§impl Mode
impl Mode
sourcepub const fn from_bits(bits: u32) -> Option<Self>
pub const fn from_bits(bits: u32) -> Option<Self>
Convert from underlying bit representation, unless that representation contains bits that do not correspond to a flag.
sourcepub const fn from_bits_truncate(bits: u32) -> Self
pub const fn from_bits_truncate(bits: u32) -> Self
Convert from underlying bit representation, dropping any bits that do not correspond to flags.
sourcepub const fn from_bits_retain(bits: u32) -> Self
pub const fn from_bits_retain(bits: u32) -> Self
Convert from underlying bit representation, preserving all bits (even those not corresponding to a defined flag).
sourcepub fn from_name(name: &str) -> Option<Self>
pub fn from_name(name: &str) -> Option<Self>
Get the value for a flag from its stringified name.
Names are case-sensitive, so must correspond exactly to the identifier given to the flag.
sourcepub const fn intersects(&self, other: Self) -> bool
pub const fn intersects(&self, other: Self) -> bool
Returns true if there are flags common to both self and other.
sourcepub const fn contains(&self, other: Self) -> bool
pub const fn contains(&self, other: Self) -> bool
Returns true if all of the flags in other are contained within self.
sourcepub fn set(&mut self, other: Self, value: bool)
pub fn set(&mut self, other: Self, value: bool)
Inserts or removes the specified flags depending on the passed value.
sourcepub const fn intersection(self, other: Self) -> Self
pub const fn intersection(self, other: Self) -> Self
Returns the intersection between the flags in self and
other.
Specifically, the returned set contains only the flags which are
present in both self and other.
This is equivalent to using the & operator (e.g.
ops::BitAnd), as in flags & other.
sourcepub const fn union(self, other: Self) -> Self
pub const fn union(self, other: Self) -> Self
Returns the union of between the flags in self and other.
Specifically, the returned set contains all flags which are
present in either self or other, including any which are
present in both (see Self::symmetric_difference if that
is undesirable).
This is equivalent to using the | operator (e.g.
ops::BitOr), as in flags | other.
sourcepub const fn difference(self, other: Self) -> Self
pub const fn difference(self, other: Self) -> Self
Returns the difference between the flags in self and other.
Specifically, the returned set contains all flags present in
self, except for the ones present in other.
It is also conceptually equivalent to the “bit-clear” operation:
flags & !other (and this syntax is also supported).
This is equivalent to using the - operator (e.g.
ops::Sub), as in flags - other.
sourcepub const fn symmetric_difference(self, other: Self) -> Self
pub const fn symmetric_difference(self, other: Self) -> Self
Returns the symmetric difference between the flags
in self and other.
Specifically, the returned set contains the flags present which
are present in self or other, but that are not present in
both. Equivalently, it contains the flags present in exactly
one of the sets self and other.
This is equivalent to using the ^ operator (e.g.
ops::BitXor), as in flags ^ other.
sourcepub const fn complement(self) -> Self
pub const fn complement(self) -> Self
Returns the complement of this set of flags.
Specifically, the returned set contains all the flags which are
not set in self, but which are allowed for this type.
Alternatively, it can be thought of as the set difference
between Self::all() and self (e.g. Self::all() - self)
This is equivalent to using the ! operator (e.g.
ops::Not), as in !flags.
Trait Implementations§
source§impl BitAndAssign<Mode> for Mode
impl BitAndAssign<Mode> for Mode
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOrAssign<Mode> for Mode
impl BitOrAssign<Mode> for Mode
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXorAssign<Mode> for Mode
impl BitXorAssign<Mode> for Mode
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
source§impl Extend<Mode> for Mode
impl Extend<Mode> for Mode
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one)source§impl Flags for Mode
impl Flags for Mode
source§fn from_bits_retain(bits: u32) -> Mode
fn from_bits_retain(bits: u32) -> Mode
source§fn from_bits(bits: Self::Bits) -> Option<Self>
fn from_bits(bits: Self::Bits) -> Option<Self>
source§fn from_bits_truncate(bits: Self::Bits) -> Self
fn from_bits_truncate(bits: Self::Bits) -> Self
source§fn iter_names(&self) -> IterNames<Self>
fn iter_names(&self) -> IterNames<Self>
source§fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
fn intersects(&self, other: Self) -> boolwhere Self: Sized,
true if there are flags common to both self and other.source§fn contains(&self, other: Self) -> boolwhere
Self: Sized,
fn contains(&self, other: Self) -> boolwhere Self: Sized,
true if all of the flags in other are contained within self.source§fn set(&mut self, other: Self, value: bool)where
Self: Sized,
fn set(&mut self, other: Self, value: bool)where Self: Sized,
source§fn intersection(self, other: Self) -> Self
fn intersection(self, other: Self) -> Self
source§fn difference(self, other: Self) -> Self
fn difference(self, other: Self) -> Self
source§fn symmetric_difference(self, other: Self) -> Self
fn symmetric_difference(self, other: Self) -> Self
source§fn complement(self) -> Self
fn complement(self) -> Self
source§impl FromIterator<Mode> for Mode
impl FromIterator<Mode> for Mode
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
source§impl IntoIterator for Mode
impl IntoIterator for Mode
source§impl PartialEq<Mode> for Mode
impl PartialEq<Mode> for Mode
source§impl SubAssign<Mode> for Mode
impl SubAssign<Mode> for Mode
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.