D9646: copies-rust: get the parents' copies earlier
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Mon Dec 21 22:28:40 UTC 2020
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
This remove some conditional nesting and prepare for future work were we will
unify the handling of copies from p1 and p2.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D9646
AFFECTED FILES
rust/hg-core/src/copy_tracing.rs
CHANGE DETAILS
diff --git a/rust/hg-core/src/copy_tracing.rs b/rust/hg-core/src/copy_tracing.rs
--- a/rust/hg-core/src/copy_tracing.rs
+++ b/rust/hg-core/src/copy_tracing.rs
@@ -395,59 +395,60 @@
// the individual copies information the curent revision. Creating a
// new TimeStampedPath for each `rev` â `children` vertex.
let mut copies: Option<InternalPathCopies> = None;
- if p1 != NULL_REVISION {
- // Retrieve data computed in a previous iteration
- let parent_copies = get_and_clean_parent_copies(
+ // Retrieve data computed in a previous iteration
+ let p1_copies = match p1 {
+ NULL_REVISION => None,
+ _ => get_and_clean_parent_copies(
&mut all_copies,
&mut children_count,
p1,
- );
- if let Some(parent_copies) = parent_copies {
- // combine it with data for that revision
- let vertex_copies = add_from_changes(
- &mut path_map,
- &parent_copies,
- &changes,
- Parent::FirstParent,
- rev,
- );
- // keep that data around for potential later combination
- copies = Some(vertex_copies);
- }
- }
- if p2 != NULL_REVISION {
- // Retrieve data computed in a previous iteration
- let parent_copies = get_and_clean_parent_copies(
+ ), // will be None if the vertex is not to be traversed
+ };
+ let p2_copies = match p2 {
+ NULL_REVISION => None,
+ _ => get_and_clean_parent_copies(
&mut all_copies,
&mut children_count,
p2,
+ ), // will be None if the vertex is not to be traversed
+ };
+ if let Some(parent_copies) = p1_copies {
+ // combine it with data for that revision
+ let vertex_copies = add_from_changes(
+ &mut path_map,
+ &parent_copies,
+ &changes,
+ Parent::FirstParent,
+ rev,
);
- if let Some(parent_copies) = parent_copies {
- // combine it with data for that revision
- let vertex_copies = add_from_changes(
- &mut path_map,
- &parent_copies,
- &changes,
- Parent::SecondParent,
- rev,
- );
+ // keep that data around for potential later combination
+ copies = Some(vertex_copies);
+ }
+ if let Some(parent_copies) = p2_copies {
+ // combine it with data for that revision
+ let vertex_copies = add_from_changes(
+ &mut path_map,
+ &parent_copies,
+ &changes,
+ Parent::SecondParent,
+ rev,
+ );
- copies = match copies {
- None => Some(vertex_copies),
- // Merge has two parents needs to combines their copy
- // information.
- //
- // If we got data from both parents, We need to combine
- // them.
- Some(copies) => Some(merge_copies_dict(
- &path_map,
- rev,
- vertex_copies,
- copies,
- &changes,
- )),
- };
- }
+ copies = match copies {
+ None => Some(vertex_copies),
+ // Merge has two parents needs to combines their copy
+ // information.
+ //
+ // If we got data from both parents, We need to combine
+ // them.
+ Some(copies) => Some(merge_copies_dict(
+ &path_map,
+ rev,
+ vertex_copies,
+ copies,
+ &changes,
+ )),
+ };
}
match copies {
Some(copies) => {
To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list