rust/hg-core/src/copy_tracing.rs
changeset 50003 e98fd81bb151
parent 49989 321e2b7bc95c
child 50007 83437ad8fe3d
equal deleted inserted replaced
50002:5f1cd6839c69 50003:e98fd81bb151
    57         overwritten.insert(winner.rev);
    57         overwritten.insert(winner.rev);
    58         overwritten.insert(loser.rev);
    58         overwritten.insert(loser.rev);
    59         Self {
    59         Self {
    60             rev,
    60             rev,
    61             path: winner.path,
    61             path: winner.path,
    62             overwritten: overwritten,
    62             overwritten,
    63         }
    63         }
    64     }
    64     }
    65 
    65 
    66     /// Update the value of a pre-existing CopySource
    66     /// Update the value of a pre-existing CopySource
    67     ///
    67     ///
   487                         let cs1 = e1.get_mut();
   487                         let cs1 = e1.get_mut();
   488                         let cs2 = e2.get();
   488                         let cs2 = e2.get();
   489                         if cs1 == cs2 {
   489                         if cs1 == cs2 {
   490                             cs1.mark_delete(current_rev);
   490                             cs1.mark_delete(current_rev);
   491                         } else {
   491                         } else {
   492                             cs1.mark_delete_with_pair(current_rev, &cs2);
   492                             cs1.mark_delete_with_pair(current_rev, cs2);
   493                         }
   493                         }
   494                         e2.insert(cs1.clone());
   494                         e2.insert(cs1.clone());
   495                     }
   495                     }
   496                 }
   496                 }
   497             }
   497             }
   511     path_dest: &HgPath,
   511     path_dest: &HgPath,
   512     path_source: &HgPath,
   512     path_source: &HgPath,
   513 ) {
   513 ) {
   514     let dest = path_map.tokenize(path_dest);
   514     let dest = path_map.tokenize(path_dest);
   515     let source = path_map.tokenize(path_source);
   515     let source = path_map.tokenize(path_source);
   516     let entry;
   516     let entry = if let Some(v) = base_copies.get(&source) {
   517     if let Some(v) = base_copies.get(&source) {
   517         match &v.path {
   518         entry = match &v.path {
       
   519             Some(path) => Some((*(path)).to_owned()),
   518             Some(path) => Some((*(path)).to_owned()),
   520             None => Some(source.to_owned()),
   519             None => Some(source.to_owned()),
   521         }
   520         }
   522     } else {
   521     } else {
   523         entry = Some(source.to_owned());
   522         Some(source.to_owned())
   524     }
   523     };
   525     // Each new entry is introduced by the children, we
   524     // Each new entry is introduced by the children, we
   526     // record this information as we will need it to take
   525     // record this information as we will need it to take
   527     // the right decision when merging conflicting copy
   526     // the right decision when merging conflicting copy
   528     // information. See merge_copies_dict for details.
   527     // information. See merge_copies_dict for details.
   529     match copies.entry(dest) {
   528     match copies.entry(dest) {
   561         if overwrite {
   560         if overwrite {
   562             let (winner, loser) = match pick {
   561             let (winner, loser) = match pick {
   563                 MergePick::Major | MergePick::Any => (src_major, src_minor),
   562                 MergePick::Major | MergePick::Any => (src_major, src_minor),
   564                 MergePick::Minor => (src_minor, src_major),
   563                 MergePick::Minor => (src_minor, src_major),
   565             };
   564             };
   566             MergeResult::UseNewValue(CopySource::new_from_merge(
   565             MergeResult::NewValue(CopySource::new_from_merge(
   567                 current_merge,
   566                 current_merge,
   568                 winner,
   567                 winner,
   569                 loser,
   568                 loser,
   570             ))
   569             ))
   571         } else {
   570         } else {
   572             match pick {
   571             match pick {
   573                 MergePick::Any | MergePick::Major => {
   572                 MergePick::Any | MergePick::Major => MergeResult::RightValue,
   574                     MergeResult::UseRightValue
   573                 MergePick::Minor => MergeResult::LeftValue,
   575                 }
       
   576                 MergePick::Minor => MergeResult::UseLeftValue,
       
   577             }
   574             }
   578         }
   575         }
   579     })
   576     })
   580 }
   577 }
   581 
   578