[PATCH 2 of 3 v4] diffopts: notice a negated boolean flag in diffopts
Yuya Nishihara
yuya at tcha.org
Sat Sep 17 07:53:24 UTC 2016
On Fri, 16 Sep 2016 11:15:02 -0400, Augie Fackler wrote:
> # HG changeset patch
> # User Augie Fackler <augie at google.com>
> # Date 1472586907 14400
> # Tue Aug 30 15:55:07 2016 -0400
> # Node ID aea18fa52d954e234fdfd1d24d3f37f0cb03dc60
> # Parent cb57a762749f29065635d0480bf5c87c644ba0c5
> diffopts: notice a negated boolean flag in diffopts
Also queued this, thanks.
> I feel a little bad about the isinstance() check, but some values in
> diffopts are not booleans and so we need to preserve false iff the
> flag is a boolean flag: failing to do this means we end up with empty
> string defaults for flags clobbering meaningful values from the [diff]
> section in hgrc.
>
> diff --git a/mercurial/patch.py b/mercurial/patch.py
> --- a/mercurial/patch.py
> +++ b/mercurial/patch.py
> @@ -2144,7 +2144,14 @@ def difffeatureopts(ui, opts=None, untru
> def get(key, name=None, getter=ui.configbool, forceplain=None):
> if opts:
> v = opts.get(key)
> - if v:
> + # diffopts flags are either None-default (which is passed
> + # through unchanged, so we can identify unset values), or
> + # some other falsey default (eg --unified, which defaults
> + # to an empty string). We only want to override the config
> + # entries from hgrc with command line values if they
> + # appear to have been set, which is any truthy value,
> + # True, or False.
> + if v or isinstance(v, bool):
> return v
Perhaps this could be slightly simpler if we split get() to getbool() and
getstr(), and use v is None, but that isn't a big deal.
More information about the Mercurial-devel
mailing list