mercurial/localrepo.py
changeset 40086 41fcdfe3bfeb
parent 40082 4fd0fac48922
child 40267 9d5ddf55415b
equal deleted inserted replaced
40085:aa41f1b01f31 40086:41fcdfe3bfeb
  1198         if repository.NARROW_REQUIREMENT not in self.requirements:
  1198         if repository.NARROW_REQUIREMENT not in self.requirements:
  1199             return matchmod.always(self.root, '')
  1199             return matchmod.always(self.root, '')
  1200         include, exclude = self.narrowpats
  1200         include, exclude = self.narrowpats
  1201         return narrowspec.match(self.root, include=include, exclude=exclude)
  1201         return narrowspec.match(self.root, include=include, exclude=exclude)
  1202 
  1202 
  1203     def narrowmatch(self, match=None):
  1203     def narrowmatch(self, match=None, includeexact=False):
  1204         """matcher corresponding the the repo's narrowspec
  1204         """matcher corresponding the the repo's narrowspec
  1205 
  1205 
  1206         If `match` is given, then that will be intersected with the narrow
  1206         If `match` is given, then that will be intersected with the narrow
  1207         matcher.
  1207         matcher.
       
  1208 
       
  1209         If `includeexact` is True, then any exact matches from `match` will
       
  1210         be included even if they're outside the narrowspec.
  1208         """
  1211         """
  1209         if match:
  1212         if match:
       
  1213             if includeexact and not self._narrowmatch.always():
       
  1214                 # do not exclude explicitly-specified paths so that they can
       
  1215                 # be warned later on
       
  1216                 em = matchmod.exact(match._root, match._cwd, match.files())
       
  1217                 nm = matchmod.unionmatcher([self._narrowmatch, em])
       
  1218                 return matchmod.intersectmatchers(match, nm)
  1210             return matchmod.intersectmatchers(match, self._narrowmatch)
  1219             return matchmod.intersectmatchers(match, self._narrowmatch)
  1211         return self._narrowmatch
  1220         return self._narrowmatch
  1212 
  1221 
  1213     def setnarrowpats(self, newincludes, newexcludes):
  1222     def setnarrowpats(self, newincludes, newexcludes):
  1214         narrowspec.save(self, newincludes, newexcludes)
  1223         narrowspec.save(self, newincludes, newexcludes)