pub fn duplicate_commits(
mut_repo: &mut MutableRepo,
target_commits: &[CommitId],
target_descriptions: &HashMap<CommitId, String>,
parent_commit_ids: &[CommitId],
children_commit_ids: &[CommitId],
) -> BackendResult<DuplicateCommitsStats>
Expand description
Duplicates the given target_commits
onto a new location in the graph.
The roots of target_commits
are duplicated on top of the new
parent_commit_ids
, whilst other commits in target_commits
are duplicated
on top of the newly duplicated commits in the target set. If
children_commit_ids
is not empty, the children_commit_ids
will be
rebased onto the heads of the duplicated target commits.
If target_descriptions
is not empty, it will be consulted to retrieve the
new descriptions of the target commits, falling back to the original if
the map does not contain an entry for a given commit.
This assumes that commits in children_commit_ids
can be rewritten. There
should also be no cycles in the resulting graph, i.e. children_commit_ids
should not be ancestors of parent_commit_ids
. Commits in target_commits
should be in reverse topological order (children before parents).