diff --git a/lib/src/repo.rs b/lib/src/repo.rs index 33e3949cb1..fd9bfa27a5 100644 --- a/lib/src/repo.rs +++ b/lib/src/repo.rs @@ -842,10 +842,6 @@ impl MutableRepo { .insert(new_id); } - pub fn clear_rewritten_commits(&mut self) { - self.rewritten_commits.clear(); - } - /// Record a commit as having been abandoned in this transaction. /// /// This record is used by `rebase_descendants` to know which commits have @@ -856,7 +852,8 @@ impl MutableRepo { self.abandoned_commits.insert(old_id); } - pub fn clear_abandoned_commits(&mut self) { + fn clear_descendant_rebaser_plans(&mut self) { + self.rewritten_commits.clear(); self.abandoned_commits.clear(); } @@ -902,9 +899,11 @@ impl MutableRepo { settings: &UserSettings, options: RebaseOptions, ) -> Result { - Ok(self + let result = self .rebase_descendants_return_rebaser(settings, options)? - .map_or(0, |rebaser| rebaser.rebased().len())) + .map_or(0, |rebaser| rebaser.rebased().len()); + self.clear_descendant_rebaser_plans(); + Ok(result) } pub fn rebase_descendants(&mut self, settings: &UserSettings) -> Result { @@ -915,12 +914,14 @@ impl MutableRepo { &mut self, settings: &UserSettings, ) -> Result, TreeMergeError> { - Ok(self + let result = Ok(self // We do not set RebaseOptions here, since this function does not currently return // enough information to describe the results of a rebase if some commits got // abandoned .rebase_descendants_return_rebaser(settings, Default::default())? - .map_or(HashMap::new(), |rebaser| rebaser.rebased().clone())) + .map_or(HashMap::new(), |rebaser| rebaser.rebased().clone())); + self.clear_descendant_rebaser_plans(); + result } pub fn set_wc_commit( diff --git a/lib/src/rewrite.rs b/lib/src/rewrite.rs index f6d449b4ee..e179fb29db 100644 --- a/lib/src/rewrite.rs +++ b/lib/src/rewrite.rs @@ -600,8 +600,6 @@ impl<'settings, 'repo> DescendantRebaser<'settings, 'repo> { self.heads_to_remove.clear(); self.heads_to_add.clear(); self.mut_repo.set_view(view); - self.mut_repo.clear_rewritten_commits(); - self.mut_repo.clear_abandoned_commits(); Ok(None) }