Simplify git origin a bit

This commit is contained in:
Brian Picciano 2023-06-17 16:04:26 +02:00
parent 420f1ff42a
commit 4317d7f282

View File

@ -4,13 +4,14 @@ use crate::origin::{self, store};
use std::path::{Path, PathBuf};
use std::{collections, fs, io, sync};
#[derive(Clone)]
struct Origin {
descr: origin::Descr,
repo: gix::ThreadSafeRepository,
repo: sync::Arc<gix::ThreadSafeRepository>,
tree_object_id: gix::ObjectId,
}
impl origin::Origin for sync::Arc<Origin> {
impl origin::Origin for Origin {
fn descr(&self) -> &origin::Descr {
&self.descr
}
@ -67,7 +68,7 @@ struct Store {
// more than one origin to be syncing at a time
sync_guard: sync::Mutex<collections::HashMap<origin::Descr, ()>>,
origins: sync::RwLock<collections::HashMap<origin::Descr, sync::Arc<Origin>>>,
origins: sync::RwLock<collections::HashMap<origin::Descr, Origin>>,
}
pub fn new(dir_path: PathBuf) -> io::Result<impl super::BoxedStore> {
@ -96,7 +97,7 @@ impl Store {
&self,
repo: gix::Repository,
descr: origin::Descr,
) -> Result<sync::Arc<Origin>, GetOriginError> {
) -> Result<Origin, GetOriginError> {
let origin::Descr::Git {
ref branch_name, ..
} = descr;
@ -118,11 +119,11 @@ impl Store {
.map_unexpected_while(|| format!("parsing {commit_object_id} as commit"))?
.tree();
Ok(sync::Arc::from(Origin {
Ok(Origin {
descr,
repo: repo.into(),
repo: sync::Arc::new(repo.into()),
tree_object_id,
}))
})
}
fn sync_inner(
@ -210,7 +211,7 @@ impl Store {
impl super::BoxedStore for sync::Arc<Store> {}
impl super::Store for sync::Arc<Store> {
type Origin<'store> = sync::Arc<Origin>
type Origin<'store> = Origin
where Self: 'store;
type AllDescrsIter<'store> = Box<dyn Iterator<Item = store::AllDescrsResult<origin::Descr>> + 'store>