[PATCH 2 of 3 STABLE] context: ability to manipulate diff feature opt-ins
Yuya Nishihara
yuya at tcha.org
Mon Jul 20 06:18:00 CDT 2015
On Sat, 18 Jul 2015 14:24:30 -0700, Gregory Szorc wrote:
> # HG changeset patch
> # User Gregory Szorc <gregory.szorc at gmail.com>
> # Date 1437254506 25200
> # Sat Jul 18 14:21:46 2015 -0700
> # Node ID b6ab3a470c0196159e8931c8c6dd4b5c4a52a4f6
> # Parent d88519184df5f9538b4f9294bee7a595d5dce6d2
> context: ability to manipulate diff feature opt-ins
>
> Before this patch, basectx.diff respected all diff options. Sometimes
> consumers want to opt out of certain classes of diff features.
>
> Change the function to call patch.difffeatureopts instead of
> diffallopts and allow the various features to be opted out of via
> arguments.
>
> diff --git a/mercurial/context.py b/mercurial/context.py
> --- a/mercurial/context.py
> +++ b/mercurial/context.py
> @@ -268,15 +268,23 @@ class basectx(object):
> include, exclude, default,
> auditor=r.auditor, ctx=self,
> listsubrepos=listsubrepos, badfn=badfn)
>
> - def diff(self, ctx2=None, match=None, **opts):
> - """Returns a diff generator for the given contexts and matcher"""
> + def diff(self, ctx2=None, match=None, allowgit=True, allowwhitespace=True,
> + allowformatchanging=True, **opts):
> + """Returns a diff generator for the given contexts and matcher.
> +
> + The various allow* arguments control whether the diff features under
> + that category are respected. See patch.difffeatureopts.
> + """
> if ctx2 is None:
> ctx2 = self.p1()
> if ctx2 is not None:
> ctx2 = self._repo[ctx2]
> - diffopts = patch.diffopts(self._repo.ui, opts)
> + diffopts = patch.difffeatureopts(self._repo.ui, opts=opts,
> + git=allowgit,
> + whitespace=allowwhitespace,
> + formatchanging=allowformatchanging)
> return patch.diff(self._repo, ctx2, self, match=match, opts=diffopts)
I'm noob about this API, but I think patch.diff*opts() exists to pack various
diff-related options into one argument. It seems this change goes the opposite
direction.
Instead, maybe we can change templatekw.showdiffstat() to not use ctx.diff() ?
More information about the Mercurial-devel
mailing list