- #!/usr/bin/env python
-
- from mercurial import demandimport
- demandimport.enable()
-
- import os, sys
- from mercurial.i18n import _
- from mercurial import simplemerge, fancyopts, util, ui
-
- options = [('L', 'label', [], _('labels to use on conflict markers')),
- ('a', 'text', None, _('treat all files as text')),
- ('p', 'print', None,
- _('print results instead of overwriting LOCAL')),
- ('', 'no-minimal', None,
- _('do not try to minimize conflict regions')),
- ('h', 'help', None, _('display help and exit')),
- ('q', 'quiet', None, _('suppress output'))]
-
- usage = _('''simplemerge [OPTS] LOCAL BASE OTHER
-
- Simple three-way file merge utility with a minimal feature set.
-
- Apply to LOCAL the changes necessary to go from BASE to OTHER.
-
- By default, LOCAL is overwritten with the results of this operation.
- ''')
-
- class ParseError(Exception):
- """Exception raised on errors in parsing the command line."""
-
- def showhelp():
- sys.stdout.write(usage)
- sys.stdout.write('\noptions:\n')
-
- out_opts = []
- for shortopt, longopt, default, desc in options:
- out_opts.append(('%2s%s' % (shortopt and '-%s' % shortopt,
- longopt and ' --%s' % longopt),
- '%s' % desc))
- opts_len = max([len(opt[0]) for opt in out_opts])
- for first, second in out_opts:
- sys.stdout.write(' %-*s %s\n' % (opts_len, first, second))
-
- try:
- for fp in (sys.stdin, sys.stdout, sys.stderr):
- util.setbinary(fp)
-
- opts = {}
- try:
- args = fancyopts.fancyopts(sys.argv[1:], options, opts)
- except fancyopts.getopt.GetoptError, e:
- raise ParseError(e)
- if opts['help']:
- showhelp()
- sys.exit(0)
- if len(args) != 3:
- raise ParseError(_('wrong number of arguments'))
- sys.exit(simplemerge.simplemerge(ui.ui(), *args, **opts))
- except ParseError, e:
- sys.stdout.write("%s: %s\n" % (sys.argv[0], e))
- showhelp()
- sys.exit(1)
- except util.Abort, e:
- sys.stderr.write("abort: %s\n" % e)
- sys.exit(255)
- except KeyboardInterrupt:
- sys.exit(255)