[PATCH memctx-cache] memctx: always use cache for filectxfn
Sean Farley
sean at farley.io
Sun Jun 11 18:20:25 EDT 2017
FUJIWARA Katsunori <foozy at lares.dti.ne.jp> writes:
> At Sat, 10 Jun 2017 16:01:23 -0700,
> Sean Farley wrote:
>>
>> # HG changeset patch
>> # User Sean Farley <sean at farley.io>
>> # Date 1497135618 25200
>> # Sat Jun 10 16:00:18 2017 -0700
>> # Branch memctx-cache
>> # Node ID 12f2faa6019f497ba08960564cfceff80250e75a
>> # Parent 7e9d0d8ff938dcf8ca193c17db5321a05a48e718
>> memctx: always use cache for filectxfn
>>
>> I don't see a downside to doing this unless I'm missing something.
>>
>> diff --git a/mercurial/context.py b/mercurial/context.py
>> index 7ce34af..348c13c 100644
>> --- a/mercurial/context.py
>> +++ b/mercurial/context.py
>> @@ -2103,18 +2103,19 @@ class memctx(committablectx):
>> self._files = files
>> if branch is not None:
>> self._extra['branch'] = encoding.fromlocal(branch)
>> self.substate = {}
>>
>> + self._filectxfn = filectxfn
>> if isinstance(filectxfn, patch.filestore):
>> self._filectxfn = memfilefrompatch(filectxfn)
>> elif not callable(filectxfn):
>> # if store is not callable, wrap it in a function
>> self._filectxfn = memfilefromctx(filectxfn)
>> - else:
>> - # memoizing increases performance for e.g. vcs convert scenarios.
>> - self._filectxfn = makecachingfilectxfn(filectxfn)
>> +
>> + # memoizing increases performance for e.g. vcs convert scenarios.
>> + self._filectxfn = makecachingfilectxfn(filectxfn)
>
> This change seems to cache also results of memfilefrompatch() and
> makecachingfilectxfn(). If so, should makecachingfilectxfn() be
> applied on self._filectxfn ? Or:
>
> ================
> self.substate = {}
>
> if isinstance(filectxfn, patch.filestore):
> - self._filectxfn = memfilefrompatch(filectxfn)
> + filectxfn = memfilefrompatch(filectxfn)
> elif not callable(filectxfn):
> # if store is not callable, wrap it in a function
> - self._filectxfn = memfilefromctx(filectxfn)
> - else:
The third type of object that can be sent is a function that takes
(repo, memctx, path), so we can't get rid of the 'else:' like this. My
main question in this patch is: can we cache everything from filectxfn?
If not, that's fine (and I would personally document the reason in the
code).
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 800 bytes
Desc: not available
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20170611/11bb2bac/attachment.sig>
More information about the Mercurial-devel
mailing list