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_symlinks
is false symlink entries will simply check if there is a normal file on disk - if
executable_bit
is false the executable bit will not be comparedChange::ExecutableBit
will 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 insert(&mut self, other: Self)
pub fn insert(&mut self, other: Self)
Inserts the specified flags in-place.
This method is equivalent to union
.
sourcepub fn remove(&mut self, other: Self)
pub fn remove(&mut self, other: Self)
Removes the specified flags in-place.
This method is equivalent to difference
.
sourcepub fn toggle(&mut self, other: Self)
pub fn toggle(&mut self, other: Self)
Toggles the specified flags in-place.
This method is equivalent to symmetric_difference
.
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
.
Calculating self
bitwise and (&
) other, including
any bits that don’t correspond to a defined flag.
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
.
Calculates self
bitwise or (|
) other
, including
any bits that don’t correspond to a defined flag.
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
.
Calculates self
bitwise and (&!
) the bitwise negation of other
,
including any bits that don’t correspond to a defined flag.
This method is not equivalent to a & !b
when there are bits set that
don’t correspond to a defined flag. The !
operator will unset any
bits that don’t correspond to a flag, so they’ll always be unset by a &! b
,
but respected by a.difference(b)
.
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
.
Calculates self
bitwise exclusive or (^
) other
,
including any bits that don’t correspond to a defined flag.
sourcepub const fn complement(self) -> Self
pub const fn complement(self) -> Self
Returns the complement of this set of flags.
Calculates the bitwise negation (!
) of self
,
unsetting any bits that don’t correspond to a defined flag.
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 insert(&mut self, other: Self)where
Self: Sized,
fn insert(&mut self, other: Self)where Self: Sized,
source§fn remove(&mut self, other: Self)where
Self: Sized,
fn remove(&mut self, other: Self)where Self: Sized,
source§fn toggle(&mut self, other: Self)where
Self: Sized,
fn toggle(&mut self, other: Self)where Self: Sized,
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
self
and other
.source§fn difference(self, other: Self) -> Self
fn difference(self, other: Self) -> Self
self
and other
.source§fn symmetric_difference(self, other: Self) -> Self
fn symmetric_difference(self, other: Self) -> Self
self
and other
.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.