0.0.2-alpha.3
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: crates/knowledge-git-api/src/lib.rs
|
||||
// version: 2
|
||||
// version: 3
|
||||
|
||||
//! Provider-neutral contracts for Git-backed Knowledge sources.
|
||||
//!
|
||||
@@ -38,6 +38,30 @@ impl crate::GitRevision {
|
||||
}
|
||||
}
|
||||
|
||||
/// Read-only local materialization of one authoritative Git revision.
|
||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
||||
pub struct GitSnapshot {
|
||||
path: std::path::PathBuf,
|
||||
revision: crate::GitRevision,
|
||||
}
|
||||
|
||||
impl crate::GitSnapshot {
|
||||
/// Build a snapshot contract from a resolved revision and its local read root.
|
||||
pub fn new(revision: crate::GitRevision, path: std::path::PathBuf) -> crate::GitSnapshot {
|
||||
return crate::GitSnapshot { path, revision };
|
||||
}
|
||||
|
||||
/// Return the local root containing the materialized repository content.
|
||||
pub fn path(&self) -> &std::path::Path {
|
||||
return self.path.as_path();
|
||||
}
|
||||
|
||||
/// Return the authoritative revision represented by the snapshot.
|
||||
pub fn revision(&self) -> &crate::GitRevision {
|
||||
return &self.revision;
|
||||
}
|
||||
}
|
||||
|
||||
/// Provider-neutral operations required from a Git repository backend.
|
||||
///
|
||||
/// Implementations may use a local Git executable, a Rust Git library or another generic Git
|
||||
@@ -51,6 +75,9 @@ pub trait GitRepository {
|
||||
|
||||
/// Resolve one opaque reference to the authoritative revision used by synchronization.
|
||||
fn resolve_revision(&self, source_id: &knowledge_domain_lib::SourceId, reference: &crate::GitReference) -> Result<crate::GitRevision, Self::Error>;
|
||||
|
||||
/// Prepare or validate a read-only local snapshot for one resolved revision.
|
||||
fn prepare_snapshot(&self, source_id: &knowledge_domain_lib::SourceId, revision: &crate::GitRevision) -> Result<crate::GitSnapshot, Self::Error>;
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
Reference in New Issue
Block a user