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
@@ -645,7 +645,7 @@
                 }
                 Some(src_minor) => {
                     let (pick, overwrite) =
-                        cmp_value(oracle, &dest, &src_major, src_minor);
+                        cmp_value(oracle, &dest, src_minor, &src_major);
                     if overwrite {
                         oracle.record_overwrite(src_minor.rev, current_merge);
                         oracle.record_overwrite(src_major.rev, current_merge);
@@ -661,8 +661,8 @@
                         minor.insert(dest, src);
                     } else {
                         match pick {
-                            MergePick::Any | MergePick::Major => None,
-                            MergePick::Minor => minor.insert(dest, src_major),
+                            MergePick::Any | MergePick::Minor => None,
+                            MergePick::Major => minor.insert(dest, src_major),
                         };
                     }
                 }