amend: fix copy records handling (issue3410)
Messing with the dirstate before the intermediate commit seems error prone.
Instead, commit and recompute the copies with copies.pathcopies(), then use
that with commitctx().
Since copies.pathcopies() does not support file replacement very well, the
whole .renamed() condition in samefile() is removed and the "file replacement
caused by differing copy source" effect is discarded.
Test shamelessly stolen from Idan Kamara <idankk86@gmail.com>
$ "$TESTDIR/hghave" symlink || exit 80
$ origdir=`pwd`
$ hg init repo
$ cd repo
$ ln -s nothing dangling
avoid tar warnings about old timestamp
$ hg ci -d '2000-01-01 00:00:00 +0000' -qAm 'add symlink'
$ hg archive -t files ../archive
$ hg archive -t tar -p tar ../archive.tar
$ hg archive -t zip -p zip ../archive.zip
files
$ cd "$origdir"
$ cd archive
$ "$TESTDIR/readlink.py" dangling
dangling -> nothing
tar
$ cd "$origdir"
$ tar xf archive.tar
$ cd tar
$ "$TESTDIR/readlink.py" dangling
dangling -> nothing
zip
$ cd "$origdir"
$ unzip archive.zip > /dev/null
$ cd zip
$ "$TESTDIR/readlink.py" dangling
dangling -> nothing