# HG changeset patch # User Mads Kiilerich # Date 2013-01-15 01:59:12 # Node ID 760c0d67ce5e33f303c3cb2b4437369c408b5fa0 # Parent 4b09e6f7d7de2352e975a49ecf1f87ad2dfad3d8 merge: process files in sorted order diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -228,7 +228,7 @@ def manifestmerge(repo, p1, p2, pa, over break # Compare manifests - for f, n in m1.iteritems(): + for f, n in sorted(m1.iteritems()): if partial and not partial(f): continue if f in m2: @@ -274,7 +274,7 @@ def manifestmerge(repo, p1, p2, pa, over else: act("other deleted", "r", f) - for f, n in m2.iteritems(): + for f, n in sorted(m2.iteritems()): if partial and not partial(f): continue if f in m1 or f in copied: # files already visited diff --git a/tests/test-copy-move-merge.t b/tests/test-copy-move-merge.t --- a/tests/test-copy-move-merge.t +++ b/tests/test-copy-move-merge.t @@ -31,8 +31,8 @@ resolving manifests overwrite: False, partial: False ancestor: b8bf91eeebbc, local: add3f11052fa+, remote: 17c05bb7fcb6 + a: remote moved to b -> m a: remote moved to c -> m - a: remote moved to b -> m preserving a for resolve of b preserving a for resolve of c removing a diff --git a/tests/test-graft.t b/tests/test-graft.t --- a/tests/test-graft.t +++ b/tests/test-graft.t @@ -158,8 +158,8 @@ Graft out of order, skipping a merge and resolving manifests overwrite: False, partial: False ancestor: 4c60f11aa304, local: 1905859650ec+, remote: 9c233e8e184d + d: remote is newer -> g e: versions differ -> m - d: remote is newer -> g preserving e for resolve of e updating: d 1/2 files (50.00%) getting d diff --git a/tests/test-rename-dir-merge.t b/tests/test-rename-dir-merge.t --- a/tests/test-rename-dir-merge.t +++ b/tests/test-rename-dir-merge.t @@ -39,9 +39,9 @@ resolving manifests overwrite: False, partial: False ancestor: f9b20c0d4c51, local: ce36d17b18fb+, remote: 397f8b00a740 - a/c: remote renamed directory to b/c -> d + a/a: other deleted -> r a/b: other deleted -> r - a/a: other deleted -> r + a/c: remote renamed directory to b/c -> d b/a: remote created -> g b/b: remote created -> g updating: a/a 1/5 files (20.00%) diff --git a/tests/test-update-reverse.t b/tests/test-update-reverse.t --- a/tests/test-update-reverse.t +++ b/tests/test-update-reverse.t @@ -68,8 +68,8 @@ resolving manifests overwrite: True, partial: False ancestor: 91ebc10ed028+, local: 91ebc10ed028+, remote: 71a760306caf + side1: other deleted -> r side2: other deleted -> r - side1: other deleted -> r main: remote created -> g updating: side1 1/3 files (33.33%) removing side1