# HG changeset patch # User Matt Mackall # Date 1120758063 28800 # Node ID a7e26722286489f4e4d04230851e767f151d8fd2 # Parent 8c89408a7154d2da94766e957a088407fd0fef93 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----- diff -r 8c89408a7154 -r a7e267222864 mercurial/hg.py --- a/mercurial/hg.py Wed Jul 06 22:41:56 2005 -0800 +++ b/mercurial/hg.py Thu Jul 07 09:41:03 2005 -0800 @@ -487,7 +487,7 @@ self.wopener = opener(self.root) self.manifest = manifest(self.opener) self.changelog = changelog(self.opener) - self.ignorelist = None + self.ignorefunc = None self.tagscache = None self.nodetagscache = None @@ -498,17 +498,22 @@ except IOError: pass def ignore(self, f): - if self.ignorelist is None: - self.ignorelist = [] + if not self.ignorefunc: + bigpat = [] try: l = file(self.wjoin(".hgignore")) for pat in l: if pat != "\n": - self.ignorelist.append(re.compile(util.pconvert(pat[:-1]))) + bigpat.append(util.pconvert(pat[:-1])) except IOError: pass - for pat in self.ignorelist: - if pat.search(f): return True - return False + if bigpat: + s = "(%s)" % (")|(".join(bigpat)) + r = re.compile(s) + self.ignorefunc = r.search + else: + self.ignorefunc = lambda x: False + + return self.ignorefunc(f) def hook(self, name, **args): s = self.ui.config("hooks", name)