aboutsummaryrefslogtreecommitdiff
path: root/supergit/src/raw
diff options
context:
space:
mode:
Diffstat (limited to 'supergit/src/raw')
-rw-r--r--supergit/src/raw/branch_walk.rs18
-rw-r--r--supergit/src/raw/mod.rs25
2 files changed, 32 insertions, 11 deletions
diff --git a/supergit/src/raw/branch_walk.rs b/supergit/src/raw/branch_walk.rs
index dfc7485..d4232c4 100644
--- a/supergit/src/raw/branch_walk.rs
+++ b/supergit/src/raw/branch_walk.rs
@@ -1 +1,19 @@
//! Walk along a branch parsing commit metadata
+
+use std::collections::{BTreeMap, BTreeSet};
+
+pub struct CommitHistory {
+ /// The correct order of commit IDs
+ order: Vec<String>,
+ /// Map of commit IDs to commit metadata
+ meta: BTreeMap<String, CommitNode>,
+}
+
+pub struct CommitNode {
+ id: String,
+ author: String,
+ commiter: String,
+ message: String,
+ touches: BTreeSet<String>,
+ time: u64,
+}
diff --git a/supergit/src/raw/mod.rs b/supergit/src/raw/mod.rs
index 98602ca..7bf6c0a 100644
--- a/supergit/src/raw/mod.rs
+++ b/supergit/src/raw/mod.rs
@@ -3,13 +3,14 @@
mod branch_walk;
mod tree_walk;
+use crate::{Branch, BranchCommit};
use git2::{self, Repository};
-pub(crate) type RawResult<T> = Result<T, RawError>;
+pub type RawResult<T> = Result<T, RawError>;
/// An error abstraction for raw git operations
#[derive(Debug)]
-pub(crate) enum RawError {
+pub enum RawError {
AllBad,
}
@@ -19,24 +20,26 @@ impl From<git2::Error> for RawError {
}
}
+/// Represent a raw branch
+pub struct RawBranch {
+ name: String,
+ head: String,
+}
+
/// Wrap a libgit2 repository to provide an API fascade
-pub(crate) struct RawRepository {
+pub struct RawRepository {
inner: Repository,
}
impl RawRepository {
- pub(crate) fn open(path: &str) -> RawResult<Self> {
+ pub fn open(path: &str) -> RawResult<Self> {
Ok(Self {
inner: Repository::open(path)?,
})
}
- /// Sync the backing storage with the backing git repo
- ///
- /// This function can be invoked manually, but should be invoked
- /// basically every time your program expects changes to have
- /// happened. Polling this function is not recommended.
- pub(crate) fn update(&self) -> RawResult<()> {
- Ok(())
+ /// Parse branch data from repository
+ pub fn parse_branches(&self) -> RawResult<Vec<RawBranch>> {
+ todo!()
}
}