convert: demonstrate broken {files} list in merge commits with file flags
authorMartin von Zweigbergk <martinvonz@google.com>
Fri, 17 May 2019 11:32:48 -0700
changeset 42338 78530404d00b
parent 42337 832c59d1196e
child 42339 c0e1ea0c4cee
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
tests/test-convert-hg-sink.t
--- 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