Skip to main content

DelayedProcessCheckout

Struct DelayedProcessCheckout 

Source
pub struct DelayedProcessCheckout {
    pub entries: Vec<DelayedProcessCheckoutEntry>,
}
Expand description

Paths waiting for list_available_blobs / retry smudge (Git finish_delayed_checkout).

Fields§

§entries: Vec<DelayedProcessCheckoutEntry>

Implementations§

Source§

impl DelayedProcessCheckout

Source

pub fn push_delayed( &mut self, filter_cmd: String, path: String, smudge_meta: FilterSmudgeMeta, )

Record a delayed smudge; the file must be written after Self::finish.

Source

pub fn finish( &mut self, convert_retry: impl FnMut(&str, &FilterSmudgeMeta) -> Result<Vec<u8>, String>, write_out: impl FnMut(&str, &[u8]) -> Result<(), String>, ) -> Result<(), DelayedCheckoutError>

Complete delayed checkouts: query filters for available paths and materialize each file.

Matches Git finish_delayed_checkout (entry.c): keep a list of the filters that delayed at least one path, and repeatedly ask each filter list_available_blobs until it returns an empty list (one final empty query per filter, which the t0021 log expects). A path the filter reports that we never delayed is the “is now available … has not been delayed earlier” error (t0021 invalid file); any path still pending once every filter is done is the “was not filtered properly” error (t0021 missing file).

Like Git, every such error is reported to stderr in the error: ... format as it is found (not bundled into one bubbled-up message), and the call returns DelayedCheckoutError so the caller can exit non-zero without re-printing. Git’s error("external filter '%s' ...") quotes the filter command, and a buggy filter that offers an undelayed path is dropped immediately (it is not queried again).

convert_retry matches Git CE_RETRY: empty blob through ident/encoding/eol then a second smudge without can-delay (filter returns cached output).

Trait Implementations§

Source§

impl Debug for DelayedProcessCheckout

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for DelayedProcessCheckout

Source§

fn default() -> DelayedProcessCheckout

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.