Mercurial > hg > mercurial-crew-with-dirclash
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)) |