diff --git a/mercurial/copies.py b/mercurial/copies.py --- a/mercurial/copies.py +++ b/mercurial/copies.py @@ -285,7 +285,6 @@ # that side, even if it was also copied on the p2 side. copies[dst] = copies2[dst] if r == b.rev(): - _filter(a, b, copies) return copies for i, c in enumerate(children[r]): childctx = repo[c] @@ -321,7 +320,6 @@ cm = _committedforwardcopies(a, b.p1(), match) # combine copies from dirstate if necessary copies = _chain(cm, _dirstatecopies(b._repo, match)) - _filter(a, b, copies) else: copies = _committedforwardcopies(a, b, match) return copies @@ -373,7 +371,7 @@ repo.ui.debug('debug.copies: search mode: combined\n') copies = _chain(_backwardrenames(x, a, match=match), _forwardcopies(a, y, match=match)) - _filter(x, y, copies) + _filter(x, y, copies) return copies def mergecopies(repo, c1, c2, base): diff --git a/tests/test-copies-unrelated.t b/tests/test-copies-unrelated.t --- a/tests/test-copies-unrelated.t +++ b/tests/test-copies-unrelated.t @@ -299,6 +299,8 @@ o 0 base a $ hg debugpathcopies 1 4 + x -> y (no-filelog !) +#if filelog BROKEN: This should succeed and merge the changes from x into y $ hg graft -r 2 grafting 2:* "modify x" (glob) @@ -308,6 +310,11 @@ abort: unresolved conflicts, can't continue (use 'hg resolve' and 'hg graft --continue') [255] +#else + $ hg graft -r 2 + grafting 2:* "modify x" (glob) + merging y and x to y +#endif $ hg co -qC 2 $ hg graft -r 4 grafting 4:* "rename x to y"* (glob) @@ -345,6 +352,8 @@ o 0 base a $ hg debugpathcopies 1 5 + x -> y (no-filelog !) +#if filelog BROKEN: This should succeed and merge the changes from x into y $ hg graft -r 2 grafting 2:* "modify x" (glob) @@ -354,6 +363,11 @@ abort: unresolved conflicts, can't continue (use 'hg resolve' and 'hg graft --continue') [255] +#else + $ hg graft -r 2 + grafting 2:* "modify x" (glob) + merging y and x to y +#endif $ hg co -qC 2 BROKEN: This should succeed and merge the changes from x into y $ hg graft -r 5 diff --git a/tests/test-copies.t b/tests/test-copies.t --- a/tests/test-copies.t +++ b/tests/test-copies.t @@ -354,8 +354,7 @@ $ hg debugpathcopies 1 3 x -> z -Copy x to y on one side of merge, create y and rename to z on the other side. Pathcopies from the -first side should not include the y->z rename since y didn't exist in the merge base. +Copy x to y on one side of merge, create y and rename to z on the other side. $ newrepo $ echo x > x $ hg ci -Aqm 'add x' @@ -385,6 +384,7 @@ $ hg debugpathcopies 2 3 y -> z $ hg debugpathcopies 1 3 + y -> z (no-filelog !) Create x and y, then rename x to z on one side of merge, and rename y to z and modify z on the other side. When storing copies in the changeset, we don't