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
impl DelayedProcessCheckout
Sourcepub fn push_delayed(
&mut self,
filter_cmd: String,
path: String,
smudge_meta: FilterSmudgeMeta,
)
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.
Sourcepub fn finish(
&mut self,
convert_retry: impl FnMut(&str, &FilterSmudgeMeta) -> Result<Vec<u8>, String>,
write_out: impl FnMut(&str, &[u8]) -> Result<(), String>,
) -> Result<(), DelayedCheckoutError>
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).