# HG changeset patch # User Martin von Zweigbergk <martinv...@google.com> # Date 1499665323 25200 # Sun Jul 09 22:42:03 2017 -0700 # Node ID b90074c6fa4739ae6b817d853ebcffd931671933 # Parent 25d89317826e99474cde4b97899903191ef1ba27 match: inverse _anypats(), making it _prefix()
diff --git a/mercurial/match.py b/mercurial/match.py --- a/mercurial/match.py +++ b/mercurial/match.py @@ -373,7 +373,7 @@ super(patternmatcher, self).__init__(root, cwd, badfn) self._files = _explicitfiles(kindpats) - self._anypats = _anypats(kindpats) + self._prefix = _prefix(kindpats) self._pats, self.matchfn = _buildmatch(ctx, kindpats, '$', listsubrepos, root) @@ -382,7 +382,7 @@ return set(util.dirs(self._fileset)) | {'.'} def visitdir(self, dir): - if self.prefix() and dir in self._fileset: + if self._prefix and dir in self._fileset: return 'all' return ('.' in self._fileset or dir in self._fileset or @@ -391,7 +391,7 @@ for parentdir in util.finddirs(dir))) def prefix(self): - return not self._anypats + return self._prefix def __repr__(self): return ('<patternmatcher patterns=%r>' % self._pats) @@ -404,7 +404,7 @@ self._pats, self.matchfn = _buildmatch(ctx, kindpats, '(?:/|$)', listsubrepos, root) - self._anypats = _anypats(kindpats) + self._prefix = _prefix(kindpats) roots, dirs = _rootsanddirs(kindpats) # roots are directories which are recursively included. self._roots = set(roots) @@ -412,8 +412,7 @@ self._dirs = set(dirs) def visitdir(self, dir): - if not self._anypats and dir in self._roots: - # The condition above is essentially self.prefix() for includes + if self._prefix and dir in self._roots: return 'all' return ('.' in self._roots or dir in self._roots or @@ -948,10 +947,13 @@ filable = [kp for kp in kindpats if kp[0] not in ('rootfilesin',)] return _roots(filable) -def _anypats(kindpats): +def _prefix(kindpats): + '''Whether all the patterns match a prefix (i.e. recursively)''' for kind, pat, source in kindpats: - if kind in ('glob', 're', 'relglob', 'relre', 'set', 'rootfilesin'): - return True + assert kind not in ('listfile', 'listfile0', 'include', 'subinclude') + if kind not in ('path', 'relpath'): + return False + return True _commentre = None _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel