filemerge: use 'basic' as the default of '[ui] mergemarkers' for safety
authorFUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Sun, 06 Jul 2014 02:56:41 +0900
changeset 21918 10abc3a5c6b2
parent 21917 ac3b3a2d976d
child 21919 c350cff58444
filemerge: use 'basic' as the default of '[ui] mergemarkers' for safety Before this patch, 'detailed' is used as the default of '[ui] mergemarkers'. This embeds non-ASCII characters in tags, branches, bookmarks, author and/or commit descriptions into merged files in the encoding specified by '--encoding' global option, 'HGENCODING' or other locale setting environment variables. But, if files to be merged use another encoding, this behavior breaks consistency of encoding in merged files. For example, ISO-2022-JP or EUC-JP are sometimes used as the file encoding for Japanese characters, because of historical and/or environmental reasons, even though UTF-8 or Shift-JIS are ordinarily used as the terminal encoding. This can't be resolved automatically, because Mercurial doesn't aware encoding of managed files. This patch uses 'basic' as the default of '[ui] mergemarkers' to avoid embedding encoding sensitive characters for safety. This patch puts '[ui] mergemarkers = detailed' into default hgrc file for tests, to reduce changes for tests in this patch.
mercurial/filemerge.py
mercurial/help/config.txt
tests/run-tests.py
tests/test-basic.t
tests/test-commandserver.py.out
--- a/mercurial/filemerge.py	Thu Jul 17 20:17:17 2014 -0400
+++ b/mercurial/filemerge.py	Sun Jul 06 02:56:41 2014 +0900
@@ -376,7 +376,7 @@
 
     ui.debug("my %s other %s ancestor %s\n" % (fcd, fco, fca))
 
-    markerstyle = ui.config('ui', 'mergemarkers', 'detailed')
+    markerstyle = ui.config('ui', 'mergemarkers', 'basic')
     if markerstyle == 'basic':
         formattedlabels = _defaultconflictlabels
     else:
--- a/mercurial/help/config.txt	Thu Jul 17 20:17:17 2014 -0400
+++ b/mercurial/help/config.txt	Sun Jul 06 02:56:41 2014 +0900
@@ -1215,11 +1215,11 @@
     For configuring merge tools see the ``[merge-tools]`` section.
 
 ``mergemarkers``
-    Sets the merge conflict marker label styling. The default ``detailed``
+    Sets the merge conflict marker label styling. The ``detailed``
     style uses the ``mergemarkertemplate`` setting to style the labels.
     The ``basic`` style just uses 'local' and 'other' as the marker label.
     One of ``basic`` or ``detailed``.
-    Default is ``detailed``.
+    Default is ``basic``.
 
 ``mergemarkertemplate``
     The template used to print the commit description next to each conflict
@@ -1227,6 +1227,13 @@
     format.
     Defaults to showing the hash, tags, branches, bookmarks, author, and
     the first line of the commit description.
+    You have to pay attention to encodings of managed files, if you
+    use non-ASCII characters in tags, branches, bookmarks, author
+    and/or commit descriptions. At template expansion, non-ASCII
+    characters use the encoding specified by ``--encoding`` global
+    option, ``HGENCODING`` or other locale setting environment
+    variables. The difference of encoding between merged file and
+    conflict markers causes serious problem.
 
 ``portablefilenames``
     Check for portable filenames. Can be ``warn``, ``ignore`` or ``abort``.
--- a/tests/run-tests.py	Thu Jul 17 20:17:17 2014 -0400
+++ b/tests/run-tests.py	Sun Jul 06 02:56:41 2014 +0900
@@ -648,6 +648,7 @@
         hgrc.write('[ui]\n')
         hgrc.write('slash = True\n')
         hgrc.write('interactive = False\n')
+        hgrc.write('mergemarkers = detailed\n')
         hgrc.write('[defaults]\n')
         hgrc.write('backout = -d "0 0"\n')
         hgrc.write('commit = -d "0 0"\n')
--- a/tests/test-basic.t	Thu Jul 17 20:17:17 2014 -0400
+++ b/tests/test-basic.t	Sun Jul 06 02:56:41 2014 +0900
@@ -7,6 +7,7 @@
   defaults.tag=-d "0 0"
   ui.slash=True
   ui.interactive=False
+  ui.mergemarkers=detailed
   $ hg init t
   $ cd t
 
--- a/tests/test-commandserver.py.out	Thu Jul 17 20:17:17 2014 -0400
+++ b/tests/test-commandserver.py.out	Sun Jul 06 02:56:41 2014 +0900
@@ -80,6 +80,7 @@
 defaults.tag=-d "0 0"
 ui.slash=True
 ui.interactive=False
+ui.mergemarkers=detailed
 ui.foo=bar
 ui.nontty=true
  runcommand init foo
@@ -90,6 +91,7 @@
 defaults.tag=-d "0 0"
 ui.slash=True
 ui.interactive=False
+ui.mergemarkers=detailed
 ui.nontty=true
 
 testing hookoutput: