martinvonz created this revision. Herald added a reviewer: durin42. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers.
REVISION SUMMARY test-narrow-expanddirstate.t mimics a Google-internal extension that updates the narrowspec whenever the dirstate is accessed. Since https://phab.mercurial-scm.org/rHG1d09ba0d2ed3d19f1ca1b116591cc413eb87ac65 (narrow: move remaining narrow-limited dirstate walks to core, 2018-10-01) and a few commits before it, we now longer restrict repo.dirstate.walk() to the narrowspec. It is instead done at a higher level (e.g. context.status()). We were running into problems with the Google-internal extension when importing those commits. The issue was that the narrowspec was read before the first dirstate access. I believe the right fix is to instead update the narrowspec when trying to read it (not when reading the dirstate), so that's what this patch does. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D5275 AFFECTED FILES tests/test-narrow-expanddirstate.t CHANGE DETAILS diff --git a/tests/test-narrow-expanddirstate.t b/tests/test-narrow-expanddirstate.t --- a/tests/test-narrow-expanddirstate.t +++ b/tests/test-narrow-expanddirstate.t @@ -56,9 +56,13 @@ > from mercurial import patch > from mercurial import util as hgutil > + > narrowspecexpanded = False > def expandnarrowspec(ui, repo, newincludes=None): > if not newincludes: > return + > if getattr(repo, '_narrowspecexpanded', False): + > return + > repo._narrowspecexpanded = True > import sys > newincludes = set([newincludes]) > includes, excludes = repo.narrowpats @@ -72,24 +76,14 @@ > for f in repo[b'.'].manifest().walk(added): > repo.dirstate.normallookup(f) > - > def wrapds(ui, repo, ds): - > class expandingdirstate(ds.__class__): - > @hgutil.propertycache - > def _map(self): - > ret = super(expandingdirstate, self)._map + > def reposetup(ui, repo): + > class expandingrepo(repo.__class__): + > def narrowmatch(self, *args, **kwargs): > with repo.wlock(), repo.lock(), repo.transaction( > b'expandnarrowspec'): > expandnarrowspec(ui, repo, > encoding.environ.get(b'DIRSTATEINCLUDES')) - > return ret - > ds.__class__ = expandingdirstate - > return ds - > - > def reposetup(ui, repo): - > class expandingrepo(repo.__class__): - > def _makedirstate(self): - > dirstate = super(expandingrepo, self)._makedirstate() - > return wrapds(ui, repo, dirstate) + > return super(expandingrepo, self).narrowmatch(*args, **kwargs) > repo.__class__ = expandingrepo > > def extsetup(unused_ui): To: martinvonz, durin42, #hg-reviewers Cc: mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel