pub struct IngestPackOptions {
pub fix_thin: bool,
pub threads: Option<usize>,
pub skip_post_index_verify: bool,
pub merged_config: Option<ConfigSet>,
pub environment: Environment,
pub mark_promisor_pack: bool,
pub keep_message: Option<String>,
pub trusted_index_rows: Option<Vec<(ObjectId, u64, u32)>>,
}Expand description
Options controlling how a received pack is ingested.
Fields§
§fix_thin: boolWhen true, append missing ref-delta bases from odb before indexing
(matches git index-pack --fix-thin).
threads: Option<usize>Worker threads for index-pack hashing (None/Some(0) → read pack.threads or all CPUs).
skip_post_index_verify: boolSkip the redundant post-index verify_pack_and_collect pass after the
pack trailer was validated during indexing. Does not disable trailer checks.
merged_config: Option<ConfigSet>Merged config from the fetch/clone environment (includes command-scope GIT_CONFIG_*).
environment: EnvironmentEnvironment used when Self::merged_config is unset and config is loaded from disk.
mark_promisor_pack: boolWhen true, write an empty sibling .promisor file next to the installed pack.
keep_message: Option<String>When set, write a sibling .keep file holding this message (Git’s
index-pack --keep=<msg>), so gc and repack leave the pack alone.
The marker is written before the pack is published, so a concurrent gc
never sees the pack unprotected. A large-object promisor relies on that,
since nothing references the blobs it holds.
trusted_index_rows: Option<Vec<(ObjectId, u64, u32)>>Rows for a pack built in-process (oid, pack offset, per-object CRC32). When set, the
pack body is not rescanned to rebuild the index (local repack/gc only); together with
Self::skip_post_index_verify the pack’s trailer is trusted as written too, so the
body is not read at all.