# HG changeset patch # User Martin von Zweigbergk # Date 1644515947 28800 # Node ID 9ee70e175fed3d370fc20e255a5d2b5f9f3bebb6 # Parent 18e69f224e4be524d84c69d97c41ea9408931e76 simplemerge: replace `**opts` passed to `simplemerge()` by keyword arguments The `simplemerge` module is library code; it should not get an unmodified `opts` dict from the `simplemerge` extension. Differential Revision: https://phab.mercurial-scm.org/D12152 diff -r 18e69f224e4b -r 9ee70e175fed contrib/simplemerge --- a/contrib/simplemerge Thu Feb 03 18:14:25 2022 +0100 +++ b/contrib/simplemerge Thu Feb 10 09:59:07 2022 -0800 @@ -13,7 +13,6 @@ context, error, fancyopts, - pycompat, simplemerge, ui as uimod, ) @@ -80,8 +79,9 @@ sys.exit(0) if len(args) != 3: raise ParseError(_(b'wrong number of arguments').decode('utf8')) + mode = b'merge' if len(opts[b'label']) > 2: - opts[b'mode'] = b'merge3' + mode = b'merge3' local, base, other = args overrides = opts[b'label'] if len(overrides) > 3: @@ -103,7 +103,10 @@ local_input, base_input, other_input, - **pycompat.strkwargs(opts) + mode, + quiet=opts.get(b'quiet'), + allow_binary=opts.get(b'text'), + print_result=opts.get(b'print'), ) ) except ParseError as e: diff -r 18e69f224e4b -r 9ee70e175fed mercurial/simplemerge.py --- a/mercurial/simplemerge.py Thu Feb 03 18:14:25 2022 +0100 +++ b/mercurial/simplemerge.py Thu Feb 10 09:59:07 2022 -0800 @@ -273,14 +273,14 @@ return sl -def _verifytext(text, path, ui, opts): +def _verifytext(text, path, ui, quiet=False, allow_binary=False): """verifies that text is non-binary (unless opts[text] is passed, then we just warn)""" if stringutil.binary(text): msg = _(b"%s looks like a binary file.") % path - if not opts.get('quiet'): + if not quiet: ui.warn(_(b'warning: %s\n') % msg) - if not opts.get('text'): + if not allow_binary: raise error.Abort(msg) return text @@ -484,7 +484,16 @@ label_detail = attr.ib(default=None) -def simplemerge(ui, local, base, other, **opts): +def simplemerge( + ui, + local, + base, + other, + mode=b'merge', + quiet=False, + allow_binary=False, + print_result=False, +): """Performs the simplemerge algorithm. The merged result is written into `localctx`. @@ -498,7 +507,13 @@ # Maintain that behavior today for BC, though perhaps in the future # it'd be worth considering whether merging encoded data (what the # repository usually sees) might be more useful. - return _verifytext(ctx.decodeddata(), ctx.path(), ui, opts) + return _verifytext( + ctx.decodeddata(), + ctx.path(), + ui, + quiet=quiet, + allow_binary=allow_binary, + ) try: localtext = readctx(local.fctx) @@ -509,7 +524,6 @@ m3 = Merge3Text(basetext, localtext, othertext) conflicts = False - mode = opts.get('mode', b'merge') if mode == b'union': lines = _resolve(m3, (1, 2)) elif mode == b'local': @@ -528,7 +542,7 @@ lines, conflicts = render_minimized(m3, *labels) mergedtext = b''.join(lines) - if opts.get('print'): + if print_result: ui.fout.write(mergedtext) else: # local.fctx.flags() already has the merged flags (done in