[PATCH V2] match: inverse _anypats(), making it _prefix()
Martin von Zweigbergk
martinvonz at google.com
Tue Jul 11 16:44:28 UTC 2017
# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1499791352 25200
# Tue Jul 11 09:42:32 2017 -0700
# Node ID 2800fa259f4e1c23dc9c9605ed02f4d734dd1761
# Parent 32331f54930cebd2baf953506971953a588491b4
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,12 @@
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
+ if kind not in ('path', 'relpath'):
+ return False
+ return True
_commentre = None
More information about the Mercurial-devel
mailing list