D6429: rust-discovery: optimization of add commons/missings for empty arguments
gracinet (Georges Racinet)
phabricator at mercurial-scm.org
Thu Jun 13 09:33:24 EDT 2019
gracinet updated this revision to Diff 15486.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D6429?vs=15472&id=15486
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
More information about the Mercurial-devel
mailing list