copies: distinguish between merged and touched files during upgrade

This a filenode being different between p1, p2 and result does not necessarily
means a merges happens. For example p2 could be a strict newer version of p1, so
the p2 version is picked by the manifest merging, but then the file is manually
updated before the commit.

In this case the file should be detected as touched.

Differential Revision: https://phab.mercurial-scm.org/D10220
14 jobs for topic/default/merge-copies-fix-attempt-ready in 25 minutes and 33 seconds (queued for 4 seconds)
Status Job ID Name Coverage
  Tests
passed #177899
checks-py2

00:03:26

passed #177900
checks-py3

00:04:03

passed #177901
rust-cargo-test-py2

00:03:28

passed #177902
rust-cargo-test-py3

00:02:35

failed #177903
test-py2

00:25:33

passed #177910
test-py2-chg

00:13:26

passed #177905
test-py2-pure

00:20:31

passed #177907
test-py2-rust

00:23:25

passed #177904
test-py3

00:20:47

passed #177911
test-py3-chg

00:04:59

passed #177906
test-py3-pure

00:12:43

passed #177909
test-py3-rhg

00:23:07

passed #177908
test-py3-rust

00:23:49

 
  Phabricator
skipped #177912
phabricator-refresh
 
Name Stage Failure
failed
test-py2 Tests
Skipped test-sparse-fsmonitor.t: skipped
Skipped test-sparse-revlog.t: missing artifact, run "/tmp/mercurial-ci/tests/artifacts/scripts/generate-churning-bundle.py"
Skipped test-verify-repo-operations.py: missing feature: allow slow tests (use --allow-slow-tests)
Failed test-remotefilelog-prefetch.t: output changed
# Ran 898 tests, 56 skipped, 1 failed.
python hash seed: 3360200373
Running after_script
Uploading artifacts for failed job
ERROR: Job failed: exit code 1