From 5b243df4881855b6be618307d3f5786b5d3b1a9a Mon Sep 17 00:00:00 2001 From: Karl Heitmann Date: Tue, 21 Mar 2023 13:59:36 -0300 Subject: [PATCH] wip --- src/explorer/mod.rs | 48 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/src/explorer/mod.rs b/src/explorer/mod.rs index 7c570db..a89096a 100644 --- a/src/explorer/mod.rs +++ b/src/explorer/mod.rs @@ -32,6 +32,8 @@ pub struct GitExplorer { stop_condition_i: usize, stop_conditions: Vec>, nodes_len: usize, + abort: bool, + limit_stack: Option, } impl<'a> GitExplorer { @@ -69,6 +71,8 @@ impl<'a> GitExplorer { }; Self { + abort: false, + limit_stack: Some(500), stop_condition_i: 0, repo, root_oid, @@ -169,6 +173,28 @@ impl<'a> GitExplorer { } // let branches = branches.map(|b| BranchData::new(b)).collect(); self.paint_commit_track(self.repo.head().unwrap().peel_to_commit().unwrap(), branches) + + /* + // self.paint_commit_track(self.repo.head().unwrap().peel_to_commit().unwrap(), self.repo.branches(Some(BranchType::Local)).unwrap()) + let x = self.paint_commit_track(self.repo.head().unwrap().peel_to_commit().unwrap(), self.repo.branches(Some(BranchType::Local)).unwrap()); + x + */ + + /* + // let repo = &self.repo; + let branches = self.repo + .branches(Some(BranchType::Local)) + .unwrap(); + let head_data = self.repo.head().unwrap().peel_to_commit().unwrap().clone(); + self.paint_commit_track(head_data, branches) + */ + /* + let mut repo = &mut self.repo; + // let repo = &self.repo; + let mut branches = repo.branches(Some(BranchType::Local)).unwrap(); + let mut head_data = repo.head().unwrap().peel_to_commit().unwrap().clone(); + self.paint_commit_track(head_data, branches) + */ } }; self.nodes_len = nodes.len(); @@ -204,23 +230,23 @@ impl<'a> GitExplorer { } fn paint_branch( - &self, + &mut self, mut commits: Vec, mut output: Vec, - limit_stack: Option, - branches: Vec, - abort: bool) -> Vec { + branches: Vec,) -> Vec { // fn paint_branch(mut commits: Vec, mut output: Vec<(String, Oid)>, limit_stack: Option) -> Vec<(String, Oid)> { // let debug_data: Vec = commits.clone().into_iter().map(|c| short_id(c.id())).collect(); // println!("{:?}", debug_data); let l = commits.len(); let mut status = Status::Same; - let (abort, limit_stack) = match limit_stack { - Some(limit_stack) => { (abort || l == 0 || limit_stack == 0, Some(limit_stack - 1))}, - None => {(abort || l == 0, None)} + let (abort, limit_stack) = match self.limit_stack { + Some(limit_stack) => { (self.abort || l == 0 || limit_stack == 0, Some(limit_stack - 1))}, + None => {(self.abort || l == 0, None)} }; + self.limit_stack = limit_stack; + if abort { return vec![] } let max_index = self.find_max_index(commits.clone().into_iter().map(|c| c.time()).collect()); @@ -304,26 +330,26 @@ impl<'a> GitExplorer { } let stop_condition = self.stop_conditions.get(self.stop_condition_i).unwrap(); - let abort_next = match stop_condition { + self.abort = match stop_condition { Some(stop_condition) => { stop_condition.oid() == commit_max.id() } _ => false }; - let vec_str = self.paint_branch(dedup.to_vec(), vec![], limit_stack, branches, abort_next); + let vec_str = self.paint_branch(dedup.to_vec(), vec![], branches); output.push(GraphNode { grapheme: paint_string, oid: commit_max.id(), branch_shorthand: shorthand, summary: commit_max.summary().unwrap().to_string() }); [output, vec_str].concat() } - pub fn paint_commit_track(&self, commit: Commit, branches: Vec) -> Vec { + pub fn paint_commit_track(&mut self, commit: Commit, branches: Vec) -> Vec { // let limit_stack = 1000; // Works fine let limit_stack = 500; // Works fine // let limit_stack = 10000; // Works, but it is unhandeable :/ // paint_branch(vec![commit], vec![], Some(limit_stack), branches) - self.paint_branch(vec![commit], vec![], Some(limit_stack), branches, false) + self.paint_branch(vec![commit], vec![], branches) } }