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)) |