// use std::sync::atomic::AtomicBool; use crate as git; use derive_more::Deref as _; use git_next_config::GitDir; pub struct RealRepository; impl git::repository::RepositoryLike for RealRepository { fn open(&self, gitdir: &GitDir) -> Result { let gix_repo = gix::ThreadSafeRepository::open(gitdir.to_path_buf())?.to_thread_local(); Ok(git::repository::open::real(gix_repo)) } #[tracing::instrument(skip_all)] #[cfg(not(tarpaulin_include))] // requires external server fn git_clone( &self, repo_details: &git::RepoDetails, ) -> Result { tracing::info!("creating"); use secrecy::ExposeSecret; let (gix_repo, _outcome) = gix::prepare_clone_bare( repo_details.origin().expose_secret().as_str(), repo_details.gitdir.deref(), )? .fetch_only(gix::progress::Discard, &AtomicBool::new(false))?; tracing::info!("created"); Ok(git::repository::open::real(gix_repo)) } }