[PATCH 1 of 6 V2] localrepo: add isfilecached to check filecache-ed property is already cached

Yuya Nishihara yuya at tcha.org
Tue Jul 11 09:59:00 EDT 2017


On Mon, 10 Jul 2017 23:18:14 +0900, FUJIWARA Katsunori wrote:
> # HG changeset patch
> # User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
> # Date 1499695791 -32400
> #      Mon Jul 10 23:09:51 2017 +0900
> # Node ID d5ba581532af80641a881860c1dc718773892a40
> # Parent  ccb3e5399921db16e95e7429cc2fb9ef82ee846e
> localrepo: add isfilecached to check filecache-ed property is already cached

Queued, thanks.

It'll be nice if eventually filecaches can be extended by a plain class
inheritance, but that would require a fair amount of work.

> diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
> --- a/mercurial/localrepo.py
> +++ b/mercurial/localrepo.py
> @@ -103,6 +103,16 @@ class storecache(_basefilecache):
>      def join(self, obj, fname):
>          return obj.sjoin(fname)
>  
> +def isfilecached(repo, name):
> +    """check if a repo has already cached "name" filecache-ed property
> +
> +    This returns (cachedobj-or-None, iscached) tuple.
> +    """
> +    cacheentry = repo.unfiltered()._filecache.get(name, None)
> +    if not cacheentry:
> +        return None, False
> +    return cacheentry.obj, True

I prefer not calling this an "is" function because the return value can't
be evaluated as a boolean. I don't have a better alternative, but getfilecached
or getfilecachedobj seems less bad.


More information about the Mercurial-devel mailing list