diff --git a/rust/hg-core/src/copy_tracing.rs b/rust/hg-core/src/copy_tracing.rs index 02c2cf84fde288085751d4169118165ead7e36a8_cnVzdC9oZy1jb3JlL3NyYy9jb3B5X3RyYWNpbmcucnM=..1567fc5e4f73162fe2a3d88c1fb580a65e29c44c_cnVzdC9oZy1jb3JlL3NyYy9jb3B5X3RyYWNpbmcucnM= 100644 --- a/rust/hg-core/src/copy_tracing.rs +++ b/rust/hg-core/src/copy_tracing.rs @@ -395,9 +395,10 @@ // 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, @@ -401,23 +402,11 @@ &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, @@ -421,4 +410,14 @@ &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, ); @@ -424,11 +423,14 @@ ); - 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, + ); @@ -434,20 +436,19 @@ - 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) => {