#[non_exhaustive]pub struct FetchOptions {Show 23 fields
pub refspecs: Vec<String>,
pub negative_refspecs: Vec<String>,
pub tags: TagMode,
pub prune: bool,
pub dry_run: bool,
pub fetch_depth: Option<FetchDepth>,
pub deepen_since: Option<String>,
pub deepen_not: Vec<String>,
pub remote_name: Option<String>,
pub fetch_source: Option<String>,
pub configured_refspecs: Vec<String>,
pub clone_reflog: Option<CloneReflog>,
pub force: bool,
pub diagnostics: Option<DiagnosticsHandle>,
pub network_trace: bool,
pub index_pack_threads: Option<usize>,
pub thread_policy: ThreadPolicy,
pub environment: Environment,
pub http_protocol_version: Option<u8>,
pub remote_progress: bool,
pub filter: Option<ObjectFilterSpec>,
pub auto_filter: bool,
pub link_source_objects: bool,
/* private fields */
}Expand description
Options controlling a fetch.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.refspecs: Vec<String>Positive refspecs selecting what to fetch.
negative_refspecs: Vec<String>Negative refspecs excluding refs from the positive set.
Tag-following policy.
prune: boolWhether to prune local tracking refs that vanished on the remote.
dry_run: boolCompute and report updates without writing any refs or objects.
fetch_depth: Option<FetchDepth>Shallow fetch control (--depth, --deepen, --unshallow). None leaves
history depth unchanged (aside from an existing on-disk shallow file).
deepen_since: Option<String>Deepen history to include commits no older than this cutoff
(git fetch --shallow-since <date>). The value is sent verbatim as the
wire deepen-since <value>; callers should pass the Unix timestamp Git’s
upload-pack expects (a bare integer), not a human date string.
deepen_not: Vec<String>Deepen history but stop at (exclude) commits reachable from these refs/oids
(git fetch --shallow-exclude <ref>). Each entry is sent as a wire
deepen-not <ref>.
remote_name: Option<String>Remote name paired with Self::initial_remote_fetch (e.g. "origin").
fetch_source: Option<String>Source label written into FETCH_HEAD.
crate::remote::Remote::fetch sets this from the fetch URL when unset.
configured_refspecs: Vec<String>Configured remote.<name>.fetch refspecs (for opportunistic tracking when Self::refspecs
overrides them). crate::remote::Remote::fetch fills this for named remotes.
clone_reflog: Option<CloneReflog>Clone-only reflog entries for refs/remotes/{remote}/HEAD (not remote branches).
force: boolForce ref updates that would otherwise be rejected (non-fast-forward branches,
tag clobber under TagMode::All or explicit refspecs). Does not move tags
that already exist locally under default tag following.
diagnostics: Option<DiagnosticsHandle>Diagnostic sink for crate::diagnostics::Trace::Network events.
network_trace: boolWhen true with Self::diagnostics, fetch paths may emit network trace events.
index_pack_threads: Option<usize>Override worker threads for index-pack after a received pack (None = config/default).
thread_policy: ThreadPolicyGlobal / embedder thread policy (--threads); applied when Self::index_pack_threads is unset.
environment: EnvironmentDiscovery/config environment for pack ingest (GIT_CONFIG_*, -c); defaults to empty.
http_protocol_version: Option<u8>Override the HTTP Git-Protocol header for this fetch (None → client default, usually v2).
remote_progress: boolWhen true, omit the no-progress capability/argument so the remote may
send side-band channel-2 progress. Default false preserves today’s wire bytes.
filter: Option<ObjectFilterSpec>Object filter for partial clone (blob:none, blob:limit=<n>). Omitted when
unset; promisor remotes may reapply remote.*.partialclonefilter automatically.
auto_filter: boolPick the filter from the promisor remotes the server advertises and the client
accepts, from their advertised partialCloneFilter (Git’s --filter=auto; see
PromisorDecision::combined_filter).
Ignored when Self::filter is set. A remote whose stored filter is auto turns it on.
Without an accepted remote that advertises a usable filter, the fetch is unfiltered.
link_source_objects: boolInitial fetch from a plain local path: hard-link the source’s packfiles and
loose objects wholesale instead of walking the requested refs (Git’s
clone --local).
The destination then also receives objects unreachable from the fetched
refs (other refs, excluded tags, unreachable leftovers). Only honored for
a local transport with no local history, no shallow request and a source
without alternates; otherwise the fetch sends exactly the objects
reachable from the requested refs. crate::remote::clone::clone sets it
for plain-path sources (not file:// URLs). Defaults to false.
Implementations§
Source§impl FetchOptions
impl FetchOptions
Sourcepub fn initial_remote_fetch(self, enabled: bool) -> Self
pub fn initial_remote_fetch(self, enabled: bool) -> Self
Clone layout fetch: populate refs/remotes/{remote}/HEAD and packed refs.
Sourcepub fn has_deepen_request(&self) -> bool
pub fn has_deepen_request(&self) -> bool
Whether this fetch carries any shallow/deepen request (an explicit
fetch_depth/deepen-since/deepen-not). Note this does NOT cover the
“already shallow, fetching more of the same boundary” case — that is
driven by the on-disk shallow file, checked separately by the fetch
paths via crate::shallow::load_shallow_oids.