comparison mercurial/hg.py @ 649:a7e267222864

Experimental ignore regex speed-up -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Experimental ignore regex speed-up manifest hash: c6922086fb78201b60ba8cbde5b51512225ebcc8 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCzWkvywK+sNU5EO8RAohzAJ9BwkFJQzs0QRH71r1Y1Wm0QCSmEwCgrESQ Ej3Kt/y0JdhOJzQLsAiufqk= =SPjY -----END PGP SIGNATURE-----
author Matt Mackall <mpm@selenic.com>
date Thu, 07 Jul 2005 09:41:03 -0800
parents 8c89408a7154
children 2c934c7b79dc
comparison
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))