Skip to content

Commit

Permalink
lib: mild refactoring made possible by previous commit
Browse files Browse the repository at this point in the history
Inline `create_descendant_commits`, move some functionality of
`DescendantRebaser::rebase_next` to `rebase_all`, a seemingly more logical
location.
  • Loading branch information
ilyagr committed Dec 25, 2023
1 parent c1e92bd commit ebc3d87
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 21 deletions.
22 changes: 6 additions & 16 deletions lib/src/repo.rs
Original file line number Diff line number Diff line change
Expand Up @@ -878,21 +878,6 @@ impl MutableRepo {
!(self.rewritten_commits.is_empty() && self.abandoned_commits.is_empty())
}

/// Creates a `DescendantRebaser` to rebase descendants of the recorded
/// rewritten and abandoned commits.
// TODO(ilyagr): Inline this. It's only used in tests.
fn create_descendant_rebaser<'settings, 'repo>(
&'repo mut self,
settings: &'settings UserSettings,
) -> DescendantRebaser<'settings, 'repo> {
DescendantRebaser::new(
settings,
self,
self.rewritten_commits.clone(),
self.abandoned_commits.clone(),
)
}

/// After the rebaser returned by this function is dropped,
/// self.clear_descendant_rebaser_plans() needs to be called.
fn rebase_descendants_return_rebaser<'settings, 'repo>(
Expand All @@ -904,7 +889,12 @@ impl MutableRepo {
// Optimization
return Ok(None);
}
let mut rebaser = self.create_descendant_rebaser(settings);
let mut rebaser = DescendantRebaser::new(
settings,
self,
self.rewritten_commits.clone(),
self.abandoned_commits.clone(),
);
*rebaser.mut_options() = options;
rebaser.rebase_all()?;
Ok(Some(rebaser))
Expand Down
10 changes: 5 additions & 5 deletions lib/src/rewrite.rs
Original file line number Diff line number Diff line change
Expand Up @@ -587,6 +587,11 @@ impl<'settings, 'repo> DescendantRebaser<'settings, 'repo> {
new_commit,
}));
}
Ok(None)
}

pub fn rebase_all(&mut self) -> Result<(), TreeMergeError> {
while self.rebase_next()?.is_some() {}
// TODO: As the TODO above says, we should probably change the API. Even if we
// don't, we should at least make this code not do any work if you call
// rebase_next() after we've returned None.
Expand All @@ -600,11 +605,6 @@ impl<'settings, 'repo> DescendantRebaser<'settings, 'repo> {
self.heads_to_remove.clear();
self.heads_to_add.clear();
self.mut_repo.set_view(view);
Ok(None)
}

pub fn rebase_all(&mut self) -> Result<(), TreeMergeError> {
while self.rebase_next()?.is_some() {}
Ok(())
}
}
Expand Down

0 comments on commit ebc3d87

Please sign in to comment.