diff --git a/mercurial/copies.py b/mercurial/copies.py --- a/mercurial/copies.py +++ b/mercurial/copies.py @@ -631,6 +631,10 @@ def _checkcopies(ctx, f, m1, m2, base, t backwards = not remotebase and base != tca and f in mb getfctx = _makegetfctx(ctx) + if m1[f] == mb.get(f) and not remotebase: + # Nothing to merge + return + of = None seen = set([f]) for oc in getfctx(f, m1[f]).ancestors(): diff --git a/tests/test-graft.t b/tests/test-graft.t --- a/tests/test-graft.t +++ b/tests/test-graft.t @@ -181,9 +181,6 @@ Graft out of order, skipping a merge and searching for copies back to rev 1 unmatched files in other (from topological common ancestor): c - all copies found (* = to merge, ! = divergent, % = renamed and deleted): - src: 'c' -> dst: 'b' * - checking for directory renames resolving manifests branchmerge: True, force: True, partial: False ancestor: 4c60f11aa304, local: 6b9e5368ca4e+, remote: 97f8bfe72746 @@ -200,9 +197,6 @@ Graft out of order, skipping a merge and searching for copies back to rev 1 unmatched files in other (from topological common ancestor): c - all copies found (* = to merge, ! = divergent, % = renamed and deleted): - src: 'c' -> dst: 'b' * - checking for directory renames resolving manifests branchmerge: True, force: True, partial: False ancestor: 4c60f11aa304, local: 1905859650ec+, remote: 9c233e8e184d @@ -1280,3 +1274,15 @@ Check the results of the grafts tested $ hg cat f2c c2e + +Check superfluous filemerge of files renamed in the past but untouched by graft + + $ echo a > a + $ hg ci -qAma + $ hg mv a b + $ echo b > b + $ hg ci -qAmb + $ echo c > c + $ hg ci -qAmc + $ hg up -q .~2 + $ hg graft tip -qt:fail diff --git a/tests/test-merge-local.t b/tests/test-merge-local.t --- a/tests/test-merge-local.t +++ b/tests/test-merge-local.t @@ -66,7 +66,7 @@ Local merge with bad merge tool: merging zzz1_merge_ok merging zzz2_merge_bad warning: conflicts while merging zzz2_merge_bad! (edit, then use 'hg resolve --mark') - 2 files updated, 1 files merged, 2 files removed, 1 files unresolved + 2 files updated, 1 files merged, 3 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges [1] @@ -104,7 +104,7 @@ Local merge with conflicts: merging zzz1_merge_ok merging zzz2_merge_bad warning: conflicts while merging zzz2_merge_bad! (edit, then use 'hg resolve --mark') - 2 files updated, 1 files merged, 2 files removed, 1 files unresolved + 2 files updated, 1 files merged, 3 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges [1] diff --git a/tests/test-up-local-change.t b/tests/test-up-local-change.t --- a/tests/test-up-local-change.t +++ b/tests/test-up-local-change.t @@ -242,4 +242,11 @@ test updating backwards through a rename -a +b +test for superfluous filemerge of clean files renamed in the past + + $ hg up -qC tip + $ echo c > c + $ hg add c + $ hg up -qt:fail 0 + $ cd ..