copies: explicitly filter out existing file in graftcopies
The `graftcopies` function does something very strange (maybe even wrong), it
calls `_filter` with a pair of changeset that does not match the one used to
compute the copies informations.
We are about to do some rework of `_filter` to make it closer to its documented
intent and fix a couple of bug. This means some of the logic that only make
sense for graft need to go somewhere else. We add the extra filtering with
proper documentation to `graftcopies`.
Differential Revision: https://phab.mercurial-scm.org/D9802
$ hg init
$ echo This is file a1 > a
$ echo This is file b1 > b
$ hg add a b
$ hg commit -m "commit #0"
$ echo This is file b22 > b
$ hg commit -m "comment #1"
$ hg update 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm b
$ hg commit -A -m "comment #2"
removing b
created new head
$ hg update 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm b
$ hg update -c 2
abort: uncommitted changes
[20]
$ hg revert b
$ hg update -c 2
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ mv a c
Should abort:
$ hg update 1
abort: uncommitted changes
(commit or update --clean to discard changes)
[255]
$ mv c a
Should succeed:
$ hg update 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved