49 lines · 2.0 KB · Rust
RawDownload
use crate::config; /// The error returned by [`receive()`](super::Prepare::receive()).// TODO: remove unused variants#[derive(Debug, thiserror::Error)]#[expect(missing_docs)]pub enum Error {    #[error(transparent)]    Fetch(#[from] gix_protocol::fetch::Error),    #[error("The value to configure pack threads should be 0 to auto-configure or the amount of threads to use")]    PackThreads(#[from] config::unsigned_integer::Error),    #[error("The value to configure the pack index version should be 1 or 2")]    PackIndexVersion(#[from] config::key::GenericError),    #[error("Cannot fetch from a remote that uses {remote} while local repository uses {local} for object hashes")]    IncompatibleObjectHash {        local: gix_hash::Kind,        remote: gix_hash::Kind,    },    #[error(transparent)]    LoadAlternates(#[from] gix_odb::store::load_index::Error),    #[error(transparent)]    Client(#[from] gix_protocol::transport::client::Error),    #[error(transparent)]    UpdateRefs(#[from] super::refs::update::Error),    #[error("Failed to remove .keep file at \"{}\"", path.display())]    RemovePackKeepFile {        path: std::path::PathBuf,        source: std::io::Error,    },    #[error("None of the refspec(s) {} matched any of the {num_remote_refs} refs on the remote", refspecs.iter().map(|r| r.to_ref().instruction().to_bstring().to_string()).collect::<Vec<_>>().join(", "))]    NoMapping {        refspecs: Vec<gix_refspec::RefSpec>,        num_remote_refs: usize,    },    #[error("Could not obtain configuration to learn if shallow remotes should be rejected")]    RejectShallowRemoteConfig(#[from] config::boolean::Error),    #[error(transparent)]    NegotiationAlgorithmConfig(#[from] config::key::GenericErrorWithValue),} impl gix_protocol::transport::IsSpuriousError for Error {    fn is_spurious(&self) -> bool {        match self {            Error::Fetch(err) => err.is_spurious(),            Error::Client(err) => err.is_spurious(),            _ => false,        }    }}