mercurial/hg.py
changeset 649 a7e267222864
parent 648 8c89408a7154
child 650 2c934c7b79dc
equal deleted inserted replaced
648:8c89408a7154 649:a7e267222864
   485 
   485 
   486         self.opener = opener(self.path)
   486         self.opener = opener(self.path)
   487         self.wopener = opener(self.root)
   487         self.wopener = opener(self.root)
   488         self.manifest = manifest(self.opener)
   488         self.manifest = manifest(self.opener)
   489         self.changelog = changelog(self.opener)
   489         self.changelog = changelog(self.opener)
   490         self.ignorelist = None
   490         self.ignorefunc = None
   491         self.tagscache = None
   491         self.tagscache = None
   492         self.nodetagscache = None
   492         self.nodetagscache = None
   493 
   493 
   494         if not self.remote:
   494         if not self.remote:
   495             self.dirstate = dirstate(self.opener, ui, self.root)
   495             self.dirstate = dirstate(self.opener, ui, self.root)
   496             try:
   496             try:
   497                 self.ui.readconfig(self.opener("hgrc"))
   497                 self.ui.readconfig(self.opener("hgrc"))
   498             except IOError: pass
   498             except IOError: pass
   499 
   499 
   500     def ignore(self, f):
   500     def ignore(self, f):
   501         if self.ignorelist is None:
   501         if not self.ignorefunc:
   502             self.ignorelist = []
   502             bigpat = []
   503             try:
   503             try:
   504                 l = file(self.wjoin(".hgignore"))
   504                 l = file(self.wjoin(".hgignore"))
   505                 for pat in l:
   505                 for pat in l:
   506                     if pat != "\n":
   506                     if pat != "\n":
   507                         self.ignorelist.append(re.compile(util.pconvert(pat[:-1])))
   507                         bigpat.append(util.pconvert(pat[:-1]))
   508             except IOError: pass
   508             except IOError: pass
   509         for pat in self.ignorelist:
   509             if bigpat:
   510             if pat.search(f): return True
   510                 s = "(%s)" % (")|(".join(bigpat))
   511         return False
   511                 r = re.compile(s)
       
   512                 self.ignorefunc = r.search
       
   513             else:
       
   514                 self.ignorefunc = lambda x: False
       
   515 
       
   516         return self.ignorefunc(f)
   512 
   517 
   513     def hook(self, name, **args):
   518     def hook(self, name, **args):
   514         s = self.ui.config("hooks", name)
   519         s = self.ui.config("hooks", name)
   515         if s:
   520         if s:
   516             self.ui.note("running hook %s: %s\n" % (name, s))
   521             self.ui.note("running hook %s: %s\n" % (name, s))