filemerge: use only the first line of the generated conflict marker for safety
Before this patch, with careless configuration (missing '|firstline'
filtering for '{desc}' keyword, for example), '[ui]
mergemarkertemplate' can make conflict markers multiple lines.
For ordinary users, advantage of allowing '[ui] mergemarkertemplate'
to generate multiple lines for customizing seems to be less than
advantage of disallowing it for safety.
This patch uses only the first line of the conflict marker generated
from '[ui] mergemarkertemplate' configuration for safety.
$ hg init
$ echo "nothing" > a
$ hg add a
$ hg commit -m ancestor
$ echo "something" > a
$ hg commit -m branch1
$ hg co 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo "something else" > a
$ hg commit -m branch2
created new head
$ hg merge 1
merging a
warning: conflicts during merge.
merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
$ hg id
32e80765d7fe+75234512624c+ tip
$ cat a
<<<<<<< local: 32e80765d7fe - test: branch2
something else
=======
something
>>>>>>> other: 75234512624c - test: branch1
$ hg status
M a
? a.orig
Verify custom conflict markers
$ hg up -q --clean .
$ printf "\n[ui]\nmergemarkertemplate={author} {rev}\n" >> .hg/hgrc
$ hg merge 1
merging a
warning: conflicts during merge.
merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
$ cat a
<<<<<<< local: test 2
something else
=======
something
>>>>>>> other: test 1
Verify line splitting of custom conflict marker which causes multiple lines
$ hg up -q --clean .
$ cat >> .hg/hgrc <<EOF
> [ui]
> mergemarkertemplate={author} {rev}\nfoo\nbar\nbaz
> EOF
$ hg -q merge 1
warning: conflicts during merge.
merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
[1]
$ cat a
<<<<<<< local: test 2
something else
=======
something
>>>>>>> other: test 1
Verify basic conflict markers
$ hg up -q --clean .
$ printf "\n[ui]\nmergemarkers=basic\n" >> .hg/hgrc
$ hg merge 1
merging a
warning: conflicts during merge.
merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
$ cat a
<<<<<<< local
something else
=======
something
>>>>>>> other