##// END OF EJS Templates
simplemerge: use same newline detection for :mergediff as for :merge[3]...
simplemerge: use same newline detection for :mergediff as for :merge[3] The `:merge` and `:merge3` markers used the newline style detected from the base input. The `:mergediff` style always used LF as newline character. This patch teaches `:mergediff` to use the same detection as the others did. Differential Revision: https://phab.mercurial-scm.org/D11976

File last commit:

r49392:36f15913 default
r49408:b5e1283c default
Show More
simplemerge
104 lines | 2.7 KiB | text/plain | TextLexer
Gregory Szorc
global: use python3 in shebangs...
r46434 #!/usr/bin/env python3
Augie Fackler
simplemerge: update to conform with modern import conventions
r33896 from __future__ import absolute_import
Alexis S. L. Carvalho
Import 3-way merge code from bzr...
r4362
Pulkit Goyal
fancyopts: switch from fancyopts.getopt.* to getopt.*...
r30576 import getopt
Simon Heimberg
cleanup: drop unused variables and an unused import
r19378 import sys
Augie Fackler
simplemerge: update to conform with modern import conventions
r33896
import hgdemandimport
Gregory Szorc
black: blacken scripts...
r44058
Augie Fackler
simplemerge: update to conform with modern import conventions
r33896 hgdemandimport.enable()
Alexis S. L. Carvalho
actually port simplemerge to hg...
r4363 from mercurial.i18n import _
Augie Fackler
simplemerge: update to conform with modern import conventions
r33896 from mercurial import (
Phil Cohen
context: add arbitraryfilectx, which can represent files outside the workdir...
r34053 context,
Augie Fackler
simplemerge: update to conform with modern import conventions
r33896 error,
fancyopts,
Pulkit Goyal
py3: use pycompat.strkwargs() in contrib/simplemerge...
r39827 pycompat,
Augie Fackler
simplemerge: update to conform with modern import conventions
r33896 simplemerge,
ui as uimod,
Yuya Nishihara
procutil: bulk-replace function calls to point to new module
r37138 )
Gregory Szorc
black: blacken scripts...
r44058 from mercurial.utils import procutil, stringutil
Alexis S. L. Carvalho
Import 3-way merge code from bzr...
r4362
Gregory Szorc
black: blacken scripts...
r44058 options = [
(b'L', b'label', [], _(b'labels to use on conflict markers')),
(b'a', b'text', None, _(b'treat all files as text')),
(b'p', b'print', None, _(b'print results instead of overwriting LOCAL')),
(b'', b'no-minimal', None, _(b'no effect (DEPRECATED)')),
(b'h', b'help', None, _(b'display help and exit')),
(b'q', b'quiet', None, _(b'suppress output')),
]
Alexis S. L. Carvalho
polish the simplemerge command; add a test
r4364
Gregory Szorc
black: blacken scripts...
r44058 usage = _(
b'''simplemerge [OPTS] LOCAL BASE OTHER
Alexis S. L. Carvalho
polish the simplemerge command; add a test
r4364
Simple three-way file merge utility with a minimal feature set.
Thomas Arendsen Hein
Remove trailing spaces
r5081
Alexis S. L. Carvalho
polish the simplemerge command; add a test
r4364 Apply to LOCAL the changes necessary to go from BASE to OTHER.
Thomas Arendsen Hein
Remove trailing spaces
r5081
Alexis S. L. Carvalho
polish the simplemerge command; add a test
r4364 By default, LOCAL is overwritten with the results of this operation.
Gregory Szorc
black: blacken scripts...
r44058 '''
)
Alexis S. L. Carvalho
polish the simplemerge command; add a test
r4364
Matt Mackall
merge: move the bulk of simplemerge into core...
r6002 class ParseError(Exception):
"""Exception raised on errors in parsing the command line."""
Gregory Szorc
black: blacken scripts...
r44058
Alexis S. L. Carvalho
polish the simplemerge command; add a test
r4364 def showhelp():
Manuel Jacob
pycompat: change users of pycompat.{stdin,stdout,stderr} to use procutil.std*...
r45598 procutil.stdout.write(usage)
procutil.stdout.write(b'\noptions:\n')
Alexis S. L. Carvalho
Import 3-way merge code from bzr...
r4362
Alexis S. L. Carvalho
polish the simplemerge command; add a test
r4364 out_opts = []
for shortopt, longopt, default, desc in options:
Gregory Szorc
black: blacken scripts...
r44058 out_opts.append(
(
b'%2s%s'
% (
shortopt and b'-%s' % shortopt,
longopt and b' --%s' % longopt,
),
b'%s' % desc,
)
)
Alexis S. L. Carvalho
polish the simplemerge command; add a test
r4364 opts_len = max([len(opt[0]) for opt in out_opts])
for first, second in out_opts:
Manuel Jacob
pycompat: change users of pycompat.{stdin,stdout,stderr} to use procutil.std*...
r45598 procutil.stdout.write(b' %-*s %s\n' % (opts_len, first, second))
Alexis S. L. Carvalho
polish the simplemerge command; add a test
r4364
Gregory Szorc
black: blacken scripts...
r44058
Matt Mackall
merge: move the bulk of simplemerge into core...
r6002 try:
Manuel Jacob
pycompat: change users of pycompat.{stdin,stdout,stderr} to use procutil.std*...
r45598 for fp in (sys.stdin, procutil.stdout, sys.stderr):
Yuya Nishihara
procutil: bulk-replace function calls to point to new module
r37138 procutil.setbinary(fp)
Mads Kiilerich
tests: run check-code on Python files without .py extension
r19022
Matt Mackall
merge: move the bulk of simplemerge into core...
r6002 opts = {}
Alexis S. L. Carvalho
polish the simplemerge command; add a test
r4364 try:
Augie Fackler
simplemerge: port to Python 3...
r40296 bargv = [a.encode('utf8') for a in sys.argv[1:]]
args = fancyopts.fancyopts(bargv, options, opts)
Pulkit Goyal
fancyopts: switch from fancyopts.getopt.* to getopt.*...
r30576 except getopt.GetoptError as e:
Matt Mackall
merge: move the bulk of simplemerge into core...
r6002 raise ParseError(e)
Pulkit Goyal
py3: add b'' prefixes in contrib/simplemerge...
r39826 if opts[b'help']:
Alexis S. L. Carvalho
polish the simplemerge command; add a test
r4364 showhelp()
Matt Mackall
merge: move the bulk of simplemerge into core...
r6002 sys.exit(0)
if len(args) != 3:
Gregory Szorc
black: blacken scripts...
r44058 raise ParseError(_(b'wrong number of arguments').decode('utf8'))
Martin von Zweigbergk
simplemerge: use 3-way markers if mode=='merge3', ignoring number of labels...
r49404 if len(opts[b'label']) > 2:
opts[b'mode'] = b'merge3'
Phil Cohen
contrib: make simplemerge script pass context-like objects...
r33904 local, base, other = args
Gregory Szorc
black: blacken scripts...
r44058 sys.exit(
simplemerge.simplemerge(
uimod.ui.load(),
context.arbitraryfilectx(local),
context.arbitraryfilectx(base),
context.arbitraryfilectx(other),
**pycompat.strkwargs(opts)
)
)
FUJIWARA Katsunori
misc: use modern exception syntax...
r28047 except ParseError as e:
Emmanuel Leblond
py3: fix exception display encoding in contrib/simplemerge.py...
r43684 e = stringutil.forcebytestr(e)
Manuel Jacob
pycompat: change users of pycompat.{stdin,stdout,stderr} to use procutil.std*...
r45598 procutil.stdout.write(b"%s: %s\n" % (sys.argv[0].encode('utf8'), e))
Matt Mackall
merge: move the bulk of simplemerge into core...
r6002 showhelp()
sys.exit(1)
FUJIWARA Katsunori
misc: use modern exception syntax...
r28047 except error.Abort as e:
Manuel Jacob
pycompat: change users of pycompat.{stdin,stdout,stderr} to use procutil.std*...
r45598 procutil.stderr.write(b"abort: %s\n" % e)
Matt Mackall
merge: move the bulk of simplemerge into core...
r6002 sys.exit(255)
except KeyboardInterrupt:
sys.exit(255)