mercurial/hg.py
changeset 67 a182f2561c8e
parent 65 d40cc5aacc31
child 78 85f1f87dc8ff
equal deleted inserted replaced
66:5ec8b2ed858f 67:a182f2561c8e
   256 
   256 
   257         self.opener = opener(self.path)
   257         self.opener = opener(self.path)
   258         self.manifest = manifest(self.opener)
   258         self.manifest = manifest(self.opener)
   259         self.changelog = changelog(self.opener)
   259         self.changelog = changelog(self.opener)
   260         self.ignorelist = None
   260         self.ignorelist = None
       
   261         self.tags = None
   261 
   262 
   262         if not self.remote:
   263         if not self.remote:
   263             self.dircache = dircache(self.opener, ui)
   264             self.dircache = dircache(self.opener, ui)
   264             try:
   265             try:
   265                 self.current = bin(self.opener("current").read())
   266                 self.current = bin(self.opener("current").read())
   272       
   273       
   273     def ignore(self, f):
   274     def ignore(self, f):
   274         if self.ignorelist is None:
   275         if self.ignorelist is None:
   275             self.ignorelist = []
   276             self.ignorelist = []
   276             try:
   277             try:
   277                 l = open(os.path.join(self.root, ".hgignore")).readlines()
   278                 l = open(os.path.join(self.root, ".hgignore"))
   278                 for pat in l:
   279                 for pat in l:
   279                     if pat != "\n":
   280                     if pat != "\n":
   280                         self.ignorelist.append(re.compile(pat[:-1]))
   281                         self.ignorelist.append(re.compile(pat[:-1]))
   281             except IOError: pass
   282             except IOError: pass
   282         for pat in self.ignorelist:
   283         for pat in self.ignorelist:
   283             if pat.search(f): return True
   284             if pat.search(f): return True
   284         return False
   285         return False
       
   286 
       
   287     def lookup(self, key):
       
   288         if self.tags is None:
       
   289             self.tags = {}
       
   290             try:
       
   291                 fl = self.file(".hgtags")
       
   292                 for l in fl.revision(fl.tip()).splitlines():
       
   293                     if l:
       
   294                         n, k = l.split(" ")
       
   295                         self.tags[k] = bin(n)
       
   296             except KeyError: pass
       
   297         try:
       
   298             return self.tags[key]
       
   299         except KeyError:
       
   300             return self.changelog.lookup(key)
   285 
   301 
   286     def join(self, f):
   302     def join(self, f):
   287         return os.path.join(self.path, f)
   303         return os.path.join(self.path, f)
   288 
   304 
   289     def file(self, f):
   305     def file(self, f):