From 623954d19fdf0dca47db319e5c88ee561aa8d25c Mon Sep 17 00:00:00 2001 From: Katharina Fey Date: Tue, 27 Oct 2020 15:15:23 +0100 Subject: Adding raw git repository utilities --- supergit/src/raw/branch_walk.rs | 18 ++++++++++++++++++ supergit/src/raw/mod.rs | 25 ++++++++++++++----------- 2 files changed, 32 insertions(+), 11 deletions(-) (limited to 'supergit/src/raw') 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, + /// Map of commit IDs to commit metadata + meta: BTreeMap, +} + +pub struct CommitNode { + id: String, + author: String, + commiter: String, + message: String, + touches: BTreeSet, + 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 = Result; +pub type RawResult = Result; /// An error abstraction for raw git operations #[derive(Debug)] -pub(crate) enum RawError { +pub enum RawError { AllBad, } @@ -19,24 +20,26 @@ impl From 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 { + pub fn open(path: &str) -> RawResult { 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> { + todo!() } } -- cgit v1.2.3