[PATCH 08 of 11] configitems: register the full 'merge-tools' config and sub-options

Augie Fackler raf at durin42.com
Fri Oct 13 15:37:57 EDT 2017


On Fri, Oct 13, 2017 at 07:55:14PM +0200, Boris Feld wrote:
> # HG changeset patch
> # User Boris Feld <boris.feld at octobus.net>
> # Date 1507487833 -7200
> #      Sun Oct 08 20:37:13 2017 +0200
> # Node ID 6ad9f6f42f33fe5efb78f76d39c41f28333144d6
> # Parent  0824a3519c14d643a81dd4f718846f15045772ec
> # EXP-Topic config.register.ready
> # Available At https://bitbucket.org/octobus/mercurial-devel/
> #              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 6ad9f6f42f33
> configitems: register the full 'merge-tools' config and sub-options
>
> We register the merge-tools config section (which has an arbitrary base config
> value) and the possible sub-attribute. The sub-attribute has to be registered
> first or at the same time otherwise the '.*' item would shadow them.
>
> diff --git a/mercurial/configitems.py b/mercurial/configitems.py
> --- a/mercurial/configitems.py
> +++ b/mercurial/configitems.py
> @@ -498,6 +498,60 @@
>  coreconfigitem('merge', 'preferancestor',
>          default=lambda: ['*'],
>  )
> +coreconfigitem('merge-tools', '.*',
> +    default=None,
> +    generic=True,
> +)

Shouldn't this be [^.]*, since a . means a sub-attribute?

> +coreconfigitem('merge-tools', r'.*\.args$',
> +    default="$local $base $other",
> +    generic=True,
> +    priority=-1,
> +)
> +coreconfigitem('merge-tools', r'.*\.binary$',
> +    default=False,
> +    generic=True,
> +    priority=-1,
> +)
> +coreconfigitem('merge-tools', r'.*\.check$',
> +    default=list,
> +    generic=True,
> +    priority=-1,
> +)
> +coreconfigitem('merge-tools', r'.*\.checkchanged$',
> +    default=False,
> +    generic=True,
> +    priority=-1,
> +)
> +coreconfigitem('merge-tools', r'.*\.executable$',
> +    default=dynamicdefault,
> +    generic=True,
> +    priority=-1,
> +)
> +coreconfigitem('merge-tools', r'.*\.fixeol$',
> +    default=False,
> +    generic=True,
> +    priority=-1,
> +)
> +coreconfigitem('merge-tools', r'.*\.gui$',
> +    default=False,
> +    generic=True,
> +    priority=-1,
> +)
> +coreconfigitem('merge-tools', r'.*\.priority$',
> +    default=0,
> +    generic=True,
> +    priority=-1,
> +)
> +coreconfigitem('merge-tools', r'.*\.premerge$',
> +    default=dynamicdefault,
> +    generic=True,
> +    priority=-1,
> +)
> +coreconfigitem('merge-tools', r'.*\.symlink$',
> +    default=False,
> +    generic=True,
> +    priority=-1,
> +)
>  coreconfigitem('pager', 'ignore',
>      default=list,
>  )
> diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py
> --- a/mercurial/filemerge.py
> +++ b/mercurial/filemerge.py
> @@ -30,16 +30,14 @@
>      util,
>  )
>
> -def _toolstr(ui, tool, part, default=""):
> -    return ui.config("merge-tools", tool + "." + part, default)
> +def _toolstr(ui, tool, part, *args):
> +    return ui.config("merge-tools", tool + "." + part, *args)
>
> -def _toolbool(ui, tool, part, default=False):
> -    return ui.configbool("merge-tools", tool + "." + part, default)
> +def _toolbool(ui, tool, part,*args):
> +    return ui.configbool("merge-tools", tool + "." + part, *args)
>
> -def _toollist(ui, tool, part, default=None):
> -    if default is None:
> -        default = []
> -    return ui.configlist("merge-tools", tool + "." + part, default)
> +def _toollist(ui, tool, part):
> +    return ui.configlist("merge-tools", tool + "." + part)
>
>  internals = {}
>  # Merge tools to document.
> @@ -187,8 +185,8 @@
>      for k, v in ui.configitems("merge-tools"):
>          t = k.split('.')[0]
>          if t not in tools:
> -            tools[t] = int(_toolstr(ui, t, "priority", "0"))
> -        if _toolbool(ui, t, "disabled", False):
> +            tools[t] = int(_toolstr(ui, t, "priority"))
> +        if _toolbool(ui, t, "disabled"):
>              disabled.add(t)
>      names = tools.keys()
>      tools = sorted([(-p, tool) for tool, p in tools.items()
> @@ -328,7 +326,7 @@
>      try:
>          premerge = _toolbool(ui, tool, "premerge", not binary)
>      except error.ConfigError:
> -        premerge = _toolstr(ui, tool, "premerge").lower()
> +        premerge = _toolstr(ui, tool, "premerge", "").lower()
>          if premerge not in validkeep:
>              _valid = ', '.join(["'" + v + "'" for v in validkeep])
>              raise error.ConfigError(_("%s.premerge not valid "
> @@ -503,7 +501,7 @@
>                 }
>          ui = repo.ui
>
> -        args = _toolstr(ui, tool, "args", '$local $base $other')
> +        args = _toolstr(ui, tool, "args")
>          if "$output" in args:
>              out, a = a, back # read input from backup, write to original
>          replace = {'local': a, 'base': b, 'other': c, 'output': out}
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list