mercurial/dirstate.py
changeset 4371 abeb3edb2b4e
parent 4334 1cc5fc1d0994
child 4372 9edc2d6f7c10
equal deleted inserted replaced
4370:4ddc6d374265 4371:abeb3edb2b4e
    18         self.opener = opener
    18         self.opener = opener
    19         self.root = root
    19         self.root = root
    20         self.dirty = 0
    20         self.dirty = 0
    21         self.ui = ui
    21         self.ui = ui
    22         self.map = None
    22         self.map = None
       
    23         self.fp = None
    23         self.pl = None
    24         self.pl = None
    24         self.dirs = None
    25         self.dirs = None
    25         self.copymap = {}
    26         self.copymap = {}
    26         self.ignorefunc = None
    27         self.ignorefunc = None
    27         self._branch = None
    28         self._branch = None
   131             return self.map[key]
   132             return self.map[key]
   132         except TypeError:
   133         except TypeError:
   133             self.lazyread()
   134             self.lazyread()
   134             return self[key]
   135             return self[key]
   135 
   136 
       
   137     _unknown = ('?', 0, 0, 0)
       
   138 
       
   139     def get(self, key):
       
   140         try:
       
   141             return self[key]
       
   142         except KeyError:
       
   143             return self._unknown
       
   144 
   136     def __contains__(self, key):
   145     def __contains__(self, key):
   137         self.lazyread()
   146         self.lazyread()
   138         return key in self.map
   147         return key in self.map
   139 
   148 
   140     def parents(self):
   149     def parents(self):
   141         self.lazyread()
   150         if self.pl is None:
       
   151             self.pl = [nullid, nullid]
       
   152             try:
       
   153                 self.fp = self.opener('dirstate')
       
   154                 st = self.fp.read(40)
       
   155                 if len(st) == 40:
       
   156                     self.pl = st[:20], st[20:40]
       
   157             except IOError, err:
       
   158                 if err.errno != errno.ENOENT: raise
   142         return self.pl
   159         return self.pl
   143 
   160 
   144     def branch(self):
   161     def branch(self):
   145         if not self._branch:
   162         if not self._branch:
   146             try:
   163             try:
   200 
   217 
   201     def read(self):
   218     def read(self):
   202         self.map = {}
   219         self.map = {}
   203         self.pl = [nullid, nullid]
   220         self.pl = [nullid, nullid]
   204         try:
   221         try:
   205             st = self.opener("dirstate").read()
   222             if self.fp:
       
   223                 self.fp.seek(0)
       
   224                 st = self.fp.read()
       
   225                 self.fp = None
       
   226             else:
       
   227                 st = self.opener("dirstate").read()
   206             if st:
   228             if st:
   207                 self.parse(st)
   229                 self.parse(st)
   208         except IOError, err:
   230         except IOError, err:
   209             if err.errno != errno.ENOENT: raise
   231             if err.errno != errno.ENOENT: raise
   210 
   232