Patchwork [11,of,11,V2] filemerge: use 'basic' as the default of '[ui] mergemarkers' for safety

login
register
mail settings
Submitter Katsunori FUJIWARA
Date July 5, 2014, 6 p.m.
Message ID <f5d064452b9b7fa6c001.1404583210@feefifofum>
Download mbox | patch
Permalink /patch/5115/
State Accepted
Headers show

Comments

Katsunori FUJIWARA - July 5, 2014, 6 p.m.
# HG changeset patch
# User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
# Date 1404583001 -32400
#      Sun Jul 06 02:56:41 2014 +0900
# Node ID f5d064452b9b7fa6c001c5f92baf7ae1c34fd8a0
# Parent  21eb3ac84075d72de5adc097f8fe4bfe1f66c1b8
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.
Katsunori FUJIWARA - July 5, 2014, 6:07 p.m.
At Sun, 06 Jul 2014 03:00:10 +0900,
FUJIWARA Katsunori wrote:
> 
> # HG changeset patch
> # User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
> # Date 1404583001 -32400
> #      Sun Jul 06 02:56:41 2014 +0900
> # Node ID f5d064452b9b7fa6c001c5f92baf7ae1c34fd8a0
> # Parent  21eb3ac84075d72de5adc097f8fe4bfe1f66c1b8
> 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.

I choose using 'basic' as 'ui.mergemarkers' in default for simplicity
in this patch.

But is it better to use a simpler template (like "{node|short}", for
example) instead of current one for 'ui.mergemarkertemplate' in default ?



> diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py
> --- a/mercurial/filemerge.py
> +++ b/mercurial/filemerge.py
> @@ -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:
> diff --git a/mercurial/help/config.txt b/mercurial/help/config.txt
> --- a/mercurial/help/config.txt
> +++ b/mercurial/help/config.txt
> @@ -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``.
> diff --git a/tests/run-tests.py b/tests/run-tests.py
> --- a/tests/run-tests.py
> +++ b/tests/run-tests.py
> @@ -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')
> diff --git a/tests/test-basic.t b/tests/test-basic.t
> --- a/tests/test-basic.t
> +++ b/tests/test-basic.t
> @@ -7,6 +7,7 @@
>    defaults.tag=-d "0 0"
>    ui.slash=True
>    ui.interactive=False
> +  ui.mergemarkers=detailed
>    $ hg init t
>    $ cd t
>  
> diff --git a/tests/test-commandserver.py.out b/tests/test-commandserver.py.out
> --- a/tests/test-commandserver.py.out
> +++ b/tests/test-commandserver.py.out
> @@ -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:
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
> 

----------------------------------------------------------------------
[FUJIWARA Katsunori]                             foozy@lares.dti.ne.jp
Durham Goode - July 7, 2014, 4:26 p.m.
On 7/5/14, 11:07 AM, "FUJIWARA Katsunori" <foozy@lares.dti.ne.jp> wrote:

>

>At Sun, 06 Jul 2014 03:00:10 +0900,

>FUJIWARA Katsunori wrote:

>> 

>> # HG changeset patch

>> # User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>

>> # Date 1404583001 -32400

>> #      Sun Jul 06 02:56:41 2014 +0900

>> # Node ID f5d064452b9b7fa6c001c5f92baf7ae1c34fd8a0

>> # Parent  21eb3ac84075d72de5adc097f8fe4bfe1f66c1b8

>> 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.

>

>I choose using 'basic' as 'ui.mergemarkers' in default for simplicity

>in this patch.

>

>But is it better to use a simpler template (like "{node|short}", for

>example) instead of current one for 'ui.mergemarkertemplate' in default ?


What happens when non-ascii characters are inserted in the file? Does it
just show garbage? Or does it break stuff?

I don’t think showing just the node is particularly useful, so I don’t
think that would be a good alternative.  The bookmark and commit messages
are the most important, but I guess both of those could have the non-ascii
characters?  Is there any way we can sanitize the markers to just be ascii
characters? Or does that introduce more problems?

I’m not familiar enough with encoding issues to think of a good
alternative here.
Katsunori FUJIWARA - July 7, 2014, 10:34 p.m.
At Mon, 7 Jul 2014 16:26:50 +0000,
Durham Goode wrote:
> 
> On 7/5/14, 11:07 AM, "FUJIWARA Katsunori" <foozy@lares.dti.ne.jp> wrote:
> 
> >
> >At Sun, 06 Jul 2014 03:00:10 +0900,
> >FUJIWARA Katsunori wrote:
> >> 
> >> # HG changeset patch
> >> # User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
> >> # Date 1404583001 -32400
> >> #      Sun Jul 06 02:56:41 2014 +0900
> >> # Node ID f5d064452b9b7fa6c001c5f92baf7ae1c34fd8a0
> >> # Parent  21eb3ac84075d72de5adc097f8fe4bfe1f66c1b8
> >> 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.
> >
> >I choose using 'basic' as 'ui.mergemarkers' in default for simplicity
> >in this patch.
> >
> >But is it better to use a simpler template (like "{node|short}", for
> >example) instead of current one for 'ui.mergemarkertemplate' in default ?
> 
> What happens when non-ascii characters are inserted in the file? Does it
> just show garbage? Or does it break stuff?

How merged file appears depends on how editors/viewers detect
encodings of the file.

  - detect by trying to decode whole file in single encoding
    => all non-ascii characters in the file are broken

  - detect by guessing encoding of the first non-ascii character sequence
    => only non-ascii characters in marker lines are broken
       (or vice versa, if marker line appears prior to other non-ascii
       characters)

  - and so on ....


> I don’t think showing just the node is particularly useful, so I don’t
> think that would be a good alternative.  The bookmark and commit messages
> are the most important, but I guess both of those could have the non-ascii
> characters?

At least, we should assume that commit message may use non-ascii
characters (the tweet of the user using non-ascii characters in commit
messages made a start of working for this patch series).

Then, non-ascii characters may not be used in bookmarks, but we
shouldn't assume it, because Mercurial itself allows users to use
non-ascii characters for it: users are more adventurous than our
expectations :-)


> Is there any way we can sanitize the markers to just be ascii
> characters? Or does that introduce more problems?

Would you assume that "sanitize" replaces non-ascii characters by
'0xXX'-like escaping or so ?

Such "sanitize" makes marker texts decrease own readability seriously
(at least, Japanese text does so, if sanitized)


> I’m not familiar enough with encoding issues to think of a good
> alternative here.

IMHO, for safety of novice users who don't know well about encoding
and/or Mercurial, '[ui] mergemarkers' should be 'basic' in default,
even though 'detailed' marker looks rich and good (I think so, too).

----------------------------------------------------------------------
[FUJIWARA Katsunori]                             foozy@lares.dti.ne.jp
Matt Mackall - July 18, 2014, 8:33 p.m.
On Sun, 2014-07-06 at 03:00 +0900, FUJIWARA Katsunori wrote:
> # HG changeset patch
> # User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
> # Date 1404583001 -32400
> #      Sun Jul 06 02:56:41 2014 +0900
> # Node ID f5d064452b9b7fa6c001c5f92baf7ae1c34fd8a0
> # Parent  21eb3ac84075d72de5adc097f8fe4bfe1f66c1b8
> filemerge: use 'basic' as the default of '[ui] mergemarkers' for safety

Ok, it looks like we've got no choice but to switch back. This is queued
for default, thanks. And special thanks to everyone involved for testing
the default branch and finding this issue before the release.
Augie Fackler - July 19, 2014, 12:13 a.m.
On Jul 18, 2014, at 4:33 PM, Matt Mackall <mpm@selenic.com> wrote:

> On Sun, 2014-07-06 at 03:00 +0900, FUJIWARA Katsunori wrote:
>> # HG changeset patch
>> # User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
>> # Date 1404583001 -32400
>> #      Sun Jul 06 02:56:41 2014 +0900
>> # Node ID f5d064452b9b7fa6c001c5f92baf7ae1c34fd8a0
>> # Parent  21eb3ac84075d72de5adc097f8fe4bfe1f66c1b8
>> filemerge: use 'basic' as the default of '[ui] mergemarkers' for safety
> 
> Ok, it looks like we've got no choice but to switch back. This is queued
> for default, thanks. And special thanks to everyone involved for testing
> the default branch and finding this issue before the release.

Would it be welcome to advertise [ui] mergemarkers = detailed in hg config --edit's new user setup?

> 
> -- 
> Mathematics is the supreme nostalgia of our time.
> 
> 
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
Matt Mackall - July 19, 2014, 12:59 a.m.
On Fri, 2014-07-18 at 20:13 -0400, Augie Fackler wrote:
> On Jul 18, 2014, at 4:33 PM, Matt Mackall <mpm@selenic.com> wrote:
> 
> > On Sun, 2014-07-06 at 03:00 +0900, FUJIWARA Katsunori wrote:
> >> # HG changeset patch
> >> # User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
> >> # Date 1404583001 -32400
> >> #      Sun Jul 06 02:56:41 2014 +0900
> >> # Node ID f5d064452b9b7fa6c001c5f92baf7ae1c34fd8a0
> >> # Parent  21eb3ac84075d72de5adc097f8fe4bfe1f66c1b8
> >> filemerge: use 'basic' as the default of '[ui] mergemarkers' for safety
> > 
> > Ok, it looks like we've got no choice but to switch back. This is queued
> > for default, thanks. And special thanks to everyone involved for testing
> > the default branch and finding this issue before the release.
> 
> Would it be welcome to advertise [ui] mergemarkers = detailed in hg config --edit's new user setup?

I guess the strategy this cycle is to see if my merge marker dislike is
stored in a signed int and can be overflowed. It's 64-bits, folks.
Shun-ichi Goto - July 19, 2014, 3:46 a.m.
2014-07-19 9:59 GMT+09:00 Matt Mackall <mpm@selenic.com>:
> On Fri, 2014-07-18 at 20:13 -0400, Augie Fackler wrote:
>> On Jul 18, 2014, at 4:33 PM, Matt Mackall <mpm@selenic.com> wrote:
>>
>> > On Sun, 2014-07-06 at 03:00 +0900, FUJIWARA Katsunori wrote:
>> >> # HG changeset patch
>> >> # User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
>> >> # Date 1404583001 -32400
>> >> #      Sun Jul 06 02:56:41 2014 +0900
>> >> # Node ID f5d064452b9b7fa6c001c5f92baf7ae1c34fd8a0
>> >> # Parent  21eb3ac84075d72de5adc097f8fe4bfe1f66c1b8
>> >> filemerge: use 'basic' as the default of '[ui] mergemarkers' for safety
>> >
>> > Ok, it looks like we've got no choice but to switch back. This is queued
>> > for default, thanks. And special thanks to everyone involved for testing
>> > the default branch and finding this issue before the release.
>>
>> Would it be welcome to advertise [ui] mergemarkers = detailed in hg config --edit's new user setup?
>
> I guess the strategy this cycle is to see if my merge marker dislike is
> stored in a signed int and can be overflowed. It's 64-bits, folks.

I have one idea (no code yet).
We can add new style 'detail-safe' (or replacing 'detail') which fallback
to 'basic' when its text have non-ASCII (in desc, tag, branch, etc.).
I guess this style can be default.
Matt Mackall - July 19, 2014, 4:04 a.m.
On Sat, 2014-07-19 at 12:46 +0900, Shun-ichi Goto wrote:
> 2014-07-19 9:59 GMT+09:00 Matt Mackall <mpm@selenic.com>:
> > On Fri, 2014-07-18 at 20:13 -0400, Augie Fackler wrote:
> >> On Jul 18, 2014, at 4:33 PM, Matt Mackall <mpm@selenic.com> wrote:
> >>
> >> > On Sun, 2014-07-06 at 03:00 +0900, FUJIWARA Katsunori wrote:
> >> >> # HG changeset patch
> >> >> # User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
> >> >> # Date 1404583001 -32400
> >> >> #      Sun Jul 06 02:56:41 2014 +0900
> >> >> # Node ID f5d064452b9b7fa6c001c5f92baf7ae1c34fd8a0
> >> >> # Parent  21eb3ac84075d72de5adc097f8fe4bfe1f66c1b8
> >> >> filemerge: use 'basic' as the default of '[ui] mergemarkers' for safety
> >> >
> >> > Ok, it looks like we've got no choice but to switch back. This is queued
> >> > for default, thanks. And special thanks to everyone involved for testing
> >> > the default branch and finding this issue before the release.
> >>
> >> Would it be welcome to advertise [ui] mergemarkers = detailed in hg config --edit's new user setup?
> >
> > I guess the strategy this cycle is to see if my merge marker dislike is
> > stored in a signed int and can be overflowed. It's 64-bits, folks.
> 
> I have one idea (no code yet).
> We can add new style 'detail-safe' (or replacing 'detail') which fallback
> to 'basic' when its text have non-ASCII (in desc, tag, branch, etc.).
> I guess this style can be default.

Hmm. Maybe? I figure a lot of non-English-speaking users are going to
encounter this somewhere between sporadically and continuously so this
might create a fair amount of confusion and false bug reports. And
especially for Eastern character sets, replacing non-ASCII with '?' or
similar is going to be more annoying than helpful.

Instead, I think we should just leave this as an expert feature (as
merge markers themselves already are).

To clarify my earlier comment: it's the entire concept of using conflict
markers I dislike. So I really don't want to be advertising the feature.
But I'm totally open to improving the feature for the sad folks that
have to use them (like the countless people at Facebook with 30-inch IPS
monitors.. and text-only ssh connections to their repository working
copies ;_; ).

(20:01:52) durin42: 
mpm: not sure what I missed on merge markers from you? Do you dislike
the new ones?
(20:03:10) durin42: 
(surprised by your reaction on ml to my question)
(20:07:33) mpm: 
I dislike merge markers, full stop.
(20:13:27) durin42: 
Ah. Prefer tools?
(20:26:16) mpm: 
When I started writing hg, I did so with the hope that neither I nor my
users would ever have to see another accursed merge marker again. So
it's with much annoyance that I'm spending the last few days of this
development cycle dealing with obscure merge marker patches.

Patch

diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py
--- a/mercurial/filemerge.py
+++ b/mercurial/filemerge.py
@@ -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:
diff --git a/mercurial/help/config.txt b/mercurial/help/config.txt
--- a/mercurial/help/config.txt
+++ b/mercurial/help/config.txt
@@ -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``.
diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -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')
diff --git a/tests/test-basic.t b/tests/test-basic.t
--- a/tests/test-basic.t
+++ b/tests/test-basic.t
@@ -7,6 +7,7 @@ 
   defaults.tag=-d "0 0"
   ui.slash=True
   ui.interactive=False
+  ui.mergemarkers=detailed
   $ hg init t
   $ cd t
 
diff --git a/tests/test-commandserver.py.out b/tests/test-commandserver.py.out
--- a/tests/test-commandserver.py.out
+++ b/tests/test-commandserver.py.out
@@ -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: