Mercurial > hg-stable
changeset 38858:e411774a2e0f
narrow: move status-filtering to core and to ctx
One of my recent changes from repo.status(ctx1, ctx2) to
ctx1.status(ctx2) broke some of our Google-internal tests. The problem
turned out to be that the narrow extension was overriding
repo.status() to make it filter out paths outside the narrowspec. When
I changed to ctx1.status(ctx2), then that filtering obviously got
lost. ctx.status() seems like a better method to do the filtering in,
so this patch moves the filtering into that method, thereby also
moving it out of the extension and into core.
Differential Revision: https://phab.mercurial-scm.org/D4068
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Thu, 02 Aug 2018 23:50:47 -0700 |
parents | 32ece991955c |
children | 49628742d264 |
files | hgext/narrow/narrowrepo.py mercurial/context.py |
diffstat | 2 files changed, 4 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/narrow/narrowrepo.py Tue Jul 10 20:23:55 2018 +0530 +++ b/hgext/narrow/narrowrepo.py Thu Aug 02 23:50:47 2018 -0700 @@ -11,7 +11,6 @@ changegroup, hg, narrowspec, - scmutil, ) from . import ( @@ -46,23 +45,6 @@ narrowrevlog.makenarrowfilelog(fl, self.narrowmatch()) return fl - # I'm not sure this is the right place to do this filter. - # context._manifestmatches() would probably be better, or perhaps - # move it to a later place, in case some of the callers do want to know - # which directories changed. This seems to work for now, though. - def status(self, *args, **kwargs): - s = super(narrowrepository, self).status(*args, **kwargs) - narrowmatch = self.narrowmatch() - modified = list(filter(narrowmatch, s.modified)) - added = list(filter(narrowmatch, s.added)) - removed = list(filter(narrowmatch, s.removed)) - deleted = list(filter(narrowmatch, s.deleted)) - unknown = list(filter(narrowmatch, s.unknown)) - ignored = list(filter(narrowmatch, s.ignored)) - clean = list(filter(narrowmatch, s.clean)) - return scmutil.status(modified, added, removed, deleted, unknown, - ignored, clean) - def _makedirstate(self): dirstate = super(narrowrepository, self)._makedirstate() return narrowdirstate.wrapdirstate(self, dirstate)
--- a/mercurial/context.py Tue Jul 10 20:23:55 2018 +0530 +++ b/mercurial/context.py Thu Aug 02 23:50:47 2018 -0700 @@ -372,6 +372,10 @@ for rfiles, sfiles in zip(r, s): rfiles.extend("%s/%s" % (subpath, f) for f in sfiles) + narrowmatch = self._repo.narrowmatch() + if not narrowmatch.always(): + for l in r: + l[:] = list(filter(narrowmatch, l)) for l in r: l.sort()