Closed by commit rHGc5748c6969b9: rust-discovery: optimization of add commons/missings for empty arguments (authored by Georges Racinet on percheron.racinet.fr <geor...@racinet.fr>). This revision was automatically updated to reflect the committed changes. This revision was not accepted when it landed; it landed in state "Needs Review".
REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D6429?vs=15486&id=16191 CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D6429/new/ REVISION DETAIL https://phab.mercurial-scm.org/D6429 AFFECTED FILES rust/hg-core/src/discovery.rs CHANGE DETAILS diff --git a/rust/hg-core/src/discovery.rs b/rust/hg-core/src/discovery.rs --- a/rust/hg-core/src/discovery.rs +++ b/rust/hg-core/src/discovery.rs @@ -225,7 +225,11 @@ &mut self, common: impl IntoIterator<Item = Revision>, ) -> Result<(), GraphError> { + let before_len = self.common.get_bases().len(); self.common.add_bases(common); + if self.common.get_bases().len() == before_len { + return Ok(()); + } if let Some(ref mut undecided) = self.undecided { self.common.remove_ancestors_from(undecided)?; } @@ -246,11 +250,14 @@ &mut self, missing: impl IntoIterator<Item = Revision>, ) -> Result<(), GraphError> { + let mut tovisit: VecDeque<Revision> = missing.into_iter().collect(); + if tovisit.is_empty() { + return Ok(()); + } self.ensure_children_cache()?; self.ensure_undecided()?; // for safety of possible future refactors let children = self.children_cache.as_ref().unwrap(); let mut seen: HashSet<Revision> = HashSet::new(); - let mut tovisit: VecDeque<Revision> = missing.into_iter().collect(); let undecided_mut = self.undecided.as_mut().unwrap(); while let Some(rev) = tovisit.pop_front() { if !self.missing.insert(rev) { To: gracinet, #hg-reviewers, kevincox Cc: durin42, kevincox, mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel