Sebastian Thielmake fmt53acf254 years agoHistory
67 lines · 2.3 KB · Rust
RawDownload
use std::convert::TryInto; use super::Error;use crate::Repository; pub fn index_threads(repo: &Repository) -> Result<Option<usize>, Error> {    let lenient_config = repo.options.lenient_config;    let message = "The configured pack.threads is invalid. It must be 0 or greater, with 0 turning it off";    Ok(        match repo            .config            .resolved            .integer_filter("pack", None, "threads", &mut repo.filter_config_section())            .transpose()        {            Ok(Some(0)) => Some(1),            Ok(Some(n)) => match n.try_into() {                Ok(n) => Some(n),                Err(_) if lenient_config => None,                Err(_) => {                    return Err(Error::Configuration {                        message: "The value for pack.threads is out of range",                        desired: n.into(),                        source: None,                    })                }            },            Ok(None) => None,            Err(_) if lenient_config => None,            Err(err) => {                return Err(Error::Configuration {                    message,                    desired: None,                    source: err.into(),                })            }        },    )} pub fn pack_index_version(repo: &Repository) -> Result<git_pack::index::Version, Error> {    use git_pack::index::Version;    let lenient_config = repo.options.lenient_config;    let message = "The configured pack.indexVersion is invalid. It must be 1 or 2, with 2 being the default";    Ok(        match repo.config.resolved.integer("pack", None, "indexVersion").transpose() {            Ok(Some(v)) if v == 1 => Version::V1,            Ok(Some(v)) if v == 2 => Version::V2,            Ok(None) => Version::V2,            Ok(Some(_)) | Err(_) if lenient_config => Version::V2,            Ok(Some(v)) => {                return Err(Error::Configuration {                    message,                    desired: v.into(),                    source: None,                })            }            Err(err) => {                return Err(Error::Configuration {                    message,                    desired: None,                    source: err.into(),                })            }        },    )}