Mercurial > hg
view contrib/simplemerge @ 27191:20a9226bdc8a
addrevision: use general delta when the incoming base delta is bad
We unify the delta selection process to be a simple three options process:
- try to use the incoming delta (if lazydeltabase is on)
- try to find a suitable parents to delta against (if gd is on)
- try to delta against the tipmost revision
The first of this option that yield a valid delta will be used.
The test change in 'test-generaldelta.t' show this behavior as we use a delta
against the parent instead of a full delta when the incoming delta is not
suitable.
This as some impact on 'test-bundle.t' because a delta somewhere changes. It
does not seems to change the test semantic and have been ignored.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Tue, 01 Dec 2015 16:15:59 -0800 |
parents | 56b2bcea2529 |
children | 863075fd4cd0 |
line wrap: on
line source
#!/usr/bin/env python from mercurial import demandimport demandimport.enable() import sys from mercurial.i18n import _ from mercurial import error, 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, _('no effect (DEPRECATED)')), ('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 error.Abort, e: sys.stderr.write("abort: %s\n" % e) sys.exit(255) except KeyboardInterrupt: sys.exit(255)