##// END OF EJS Templates
packaging: always pass VERSION into Inno invocation...
packaging: always pass VERSION into Inno invocation The code in the Inno file was a holdover from before we had Python driving execution. With Python in the driver's seat, we can now have it resolve the version string and pass it into Inno, making the code easier to understand for people who aren't packaging gurus. Differential Revision: https://phab.mercurial-scm.org/D7161

File last commit:

r43684:3c2799cb stable
r43918:7c9f63a5 default
Show More
simplemerge
87 lines | 2.7 KiB | text/plain | TextLexer
Alexis S. L. Carvalho
actually port simplemerge to hg...
r4363 #!/usr/bin/env python
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
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 )
from mercurial.utils import (
procutil,
Emmanuel Leblond
py3: fix exception display encoding in contrib/simplemerge.py...
r43684 stringutil
Augie Fackler
simplemerge: update to conform with modern import conventions
r33896 )
Alexis S. L. Carvalho
Import 3-way merge code from bzr...
r4362
Pulkit Goyal
py3: add b'' prefixes in contrib/simplemerge...
r39826 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
Yuya Nishihara
py3: convert "usage" literal to bytes...
r40301 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.
''')
Matt Mackall
merge: move the bulk of simplemerge into core...
r6002 class ParseError(Exception):
"""Exception raised on errors in parsing the command line."""
Alexis S. L. Carvalho
polish the simplemerge command; add a test
r4364 def showhelp():
Yuya Nishihara
py3: convert "usage" literal to bytes...
r40301 pycompat.stdout.write(usage)
Augie Fackler
simplemerge: port to Python 3...
r40296 pycompat.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:
Pulkit Goyal
py3: add b'' prefixes in contrib/simplemerge...
r39826 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:
Augie Fackler
simplemerge: port to Python 3...
r40296 pycompat.stdout.write(b' %-*s %s\n' % (opts_len, first, second))
Alexis S. L. Carvalho
polish the simplemerge command; add a test
r4364
Matt Mackall
merge: move the bulk of simplemerge into core...
r6002 try:
Augie Fackler
simplemerge: port to Python 3...
r40296 for fp in (sys.stdin, pycompat.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:
Augie Fackler
simplemerge: port to Python 3...
r40296 raise ParseError(_(b'wrong number of arguments').decode('utf8'))
Phil Cohen
contrib: make simplemerge script pass context-like objects...
r33904 local, base, other = args
sys.exit(simplemerge.simplemerge(uimod.ui.load(),
Phil Cohen
context: add arbitraryfilectx, which can represent files outside the workdir...
r34053 context.arbitraryfilectx(local),
context.arbitraryfilectx(base),
context.arbitraryfilectx(other),
Pulkit Goyal
py3: use pycompat.strkwargs() in contrib/simplemerge...
r39827 **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)
Augie Fackler
simplemerge: port to Python 3...
r40296 pycompat.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:
Augie Fackler
simplemerge: port to Python 3...
r40296 pycompat.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)