[PATCH 1 of 6 V2] hg: make cachedlocalrepo filter newly cached repo as same as initial one

Yuya Nishihara yuya at tcha.org
Mon Dec 21 07:44:23 CST 2015


On Mon, 21 Dec 2015 01:09:57 +0900, FUJIWARA Katsunori wrote:
> At Sun, 20 Dec 2015 20:43:53 +0900,
> Yuya Nishihara wrote:
> > On Thu, 17 Dec 2015 02:50:49 +0900, FUJIWARA Katsunori wrote:
> > > # HG changeset patch
> > > # User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
> > > # Date 1450287754 -32400
> > > #      Thu Dec 17 02:42:34 2015 +0900
> > > # Node ID 4c237821e543338dde6bfd395c28884f065399ec
> > > # Parent  7e8a883da1711008262150bb6f64131812de3e0b
> > > hg: make cachedlocalrepo filter newly cached repo as same as initial one
> > 
> > This makes sense, but one nit.
> > 
> > > @@ -883,6 +884,8 @@ class cachedlocalrepo(object):
> > >              return self._repo, False
> > >  
> > >          self._repo = repository(self._repo.baseui, self._repo.url())
> > > +        if self._filtername:
> > > +            self._repo = self._repo.filtered(self._filtername)
> > 
> > If filtername is None, shouldn't it return an unfiltered repo?
> 
> 'unfiltered()' on repoview just returns '_unfilteredrepo' of it, and
> this doesn't cause redundant instantiation of repoview objects.
> 
> Therefore, this change works well at least for current hgweb_mode, the
> only client of cachedlocalrepo: it invokes 'filtered()' or
> 'unfiltered()' explicitly on returned repoview at the beginning of
> each serving to request of client.
> 
> Of course, it is fact that there are still some inefficiency around
> hgweb_mode and cachedlocalrepo :-)

My concern is consistency of the API. Because this patch preserves the
filtering level of the given repo, if self._repo was initially unfiltered,
I expect fetch() would return unfiltered repo.


More information about the Mercurial-devel mailing list