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 checks-py2 #177899

00:03:26

passed checks-py3 #177900

00:04:03

passed rust-cargo-test-py2 #177901

00:03:28

passed rust-cargo-test-py3 #177902

00:02:35

failed test-py2 #177903

00:25:33

passed test-py2-chg #177910

00:13:26

passed test-py2-pure #177905

00:20:31

passed test-py2-rust #177907

00:23:25

passed test-py3 #177904

00:20:47

passed test-py3-chg #177911

00:04:59

passed test-py3-pure #177906

00:12:43

passed test-py3-rhg #177909

00:23:07

passed test-py3-rust #177908

00:23:49

 
  Phabricator
skipped phabricator-refresh #177912
 
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