convert: demonstrate broken {files} list in merge commits with file flags
When there is a merge in which the flags for a file from p2 is
non-empty, `hg convert` will incorrectly include that in the
changeset's files list.
Differential Revision: https://phab.mercurial-scm.org/D6408
--- a/tests/test-convert-hg-sink.t Sat May 18 19:56:06 2019 -0400
+++ b/tests/test-convert-hg-sink.t Fri May 17 11:32:48 2019 -0700
@@ -573,3 +573,51 @@
M f
A b-only
R a-only
+
+Recorded {files} list does not get confused about flags on merge commits
+
+#if execbit
+ $ cd ..
+ $ hg init merge-flags-orig
+ $ cd merge-flags-orig
+ $ echo 0 > 0
+ $ hg ci -Aqm 'add 0'
+ $ echo a > a
+ $ chmod +x a
+ $ hg ci -qAm 'add executable file'
+ $ hg co -q 0
+ $ echo b > b
+ $ hg ci -qAm 'add file'
+ $ hg merge -q
+ $ hg ci -m 'merge'
+ $ hg log -G -T '{rev} {desc}\n'
+ @ 3 merge
+ |\
+ | o 2 add file
+ | |
+ o | 1 add executable file
+ |/
+ o 0 add 0
+
+
+# No files changed
+ $ hg log -r 3 -T '{files}\n'
+
+
+ $ cd ..
+ $ hg convert merge-flags-orig merge-flags-new -q
+ $ cd merge-flags-new
+ $ hg log -G -T '{rev} {desc}\n'
+ o 3 merge
+ |\
+ | o 2 add file
+ | |
+ o | 1 add executable file
+ |/
+ o 0 add 0
+
+BROKEN: now 'a' appears changed
+ $ hg log -r 3 -T '{files}\n'
+ a
+
+#endif