mercurial/match.py
changeset 32555 b3083be7dcb9
parent 32554 f44ea253ffe2
child 32556 5f08eca8f8d3
equal deleted inserted replaced
32554:f44ea253ffe2 32555:b3083be7dcb9
   339 class patternmatcher(basematcher):
   339 class patternmatcher(basematcher):
   340 
   340 
   341     def __init__(self, root, cwd, normalize, patterns, default='glob',
   341     def __init__(self, root, cwd, normalize, patterns, default='glob',
   342                  auditor=None, ctx=None, listsubrepos=False, warn=None,
   342                  auditor=None, ctx=None, listsubrepos=False, warn=None,
   343                  badfn=None):
   343                  badfn=None):
   344         super(patternmatcher, self).__init__(root, cwd, badfn,
   344         super(patternmatcher, self).__init__(root, cwd, badfn)
   345                                              relativeuipath=bool(patterns))
   345 
   346 
   346         kindpats = normalize(patterns, default, root, cwd, auditor, warn)
   347         self._anypats = False
   347         if not _kindpatsalwaysmatch(kindpats):
   348         self._always = False
   348             self._files = _explicitfiles(kindpats)
   349         self.patternspat = None
   349             self._anypats = _anypats(kindpats)
   350 
   350             self.patternspat, pm = _buildmatch(ctx, kindpats, '$',
   351         matchfns = []
   351                                                listsubrepos, root)
   352         if patterns:
   352             self._always = False
   353             kindpats = normalize(patterns, default, root, cwd, auditor, warn)
   353             self.matchfn = pm
   354             if not _kindpatsalwaysmatch(kindpats):
   354         else:
   355                 self._files = _explicitfiles(kindpats)
   355             self._anypats = False
   356                 self._anypats = self._anypats or _anypats(kindpats)
   356             self.patternspat = None
   357                 self.patternspat, pm = _buildmatch(ctx, kindpats, '$',
       
   358                                                    listsubrepos, root)
       
   359                 matchfns.append(pm)
       
   360 
       
   361         if not matchfns:
       
   362             m = util.always
       
   363             self._always = True
   357             self._always = True
   364         elif len(matchfns) == 1:
   358             self.matchfn = lambda f: True
   365             m = matchfns[0]
       
   366         else:
       
   367             def m(f):
       
   368                 for matchfn in matchfns:
       
   369                     if not matchfn(f):
       
   370                         return False
       
   371                 return True
       
   372 
       
   373         self.matchfn = m
       
   374 
   359 
   375     @propertycache
   360     @propertycache
   376     def _dirs(self):
   361     def _dirs(self):
   377         return set(util.dirs(self._fileset)) | {'.'}
   362         return set(util.dirs(self._fileset)) | {'.'}
   378 
   363