mercurial/revlog.py
changeset 4971 3e6dae278c99
parent 4964 ee983d0dbea8
child 4972 8d0cf46e0dc6
equal deleted inserted replaced
4970:30d4d8985dd8 4971:3e6dae278c99
   376                                   % (self.indexfile, flags >> 16))
   376                                   % (self.indexfile, flags >> 16))
   377         else:
   377         else:
   378             raise RevlogError(_("index %s unknown format %d")
   378             raise RevlogError(_("index %s unknown format %d")
   379                               % (self.indexfile, fmt))
   379                               % (self.indexfile, fmt))
   380         self.version = v
   380         self.version = v
   381         if v == REVLOGV0:
   381         self.nodemap = {nullid: nullrev}
       
   382         self.index = []
       
   383         self.indexformat = indexformatng
       
   384         if self.version == REVLOGV0:
   382             self.indexformat = indexformatv0
   385             self.indexformat = indexformatv0
       
   386         if i:
       
   387             self._parseindex(f, st)
       
   388 
       
   389     def _parseindex(self, fp, st):
       
   390         shaoffset = ngshaoffset
       
   391         if self.version == REVLOGV0:
   383             shaoffset = v0shaoffset
   392             shaoffset = v0shaoffset
   384         else:
   393 
   385             self.indexformat = indexformatng
   394         if (lazyparser.safe_to_use and not self._inline() and
   386             shaoffset = ngshaoffset
   395             st and st.st_size > 10000):
   387 
   396             # big index, let's parse it on demand
   388         if i:
   397             parser = lazyparser(fp, st.st_size, self.indexformat, shaoffset)
   389             if (lazyparser.safe_to_use and not self._inline() and
   398             self.index = lazyindex(parser)
   390                 st and st.st_size > 10000):
   399             self.nodemap = lazymap(parser)
   391                 # big index, let's parse it on demand
       
   392                 parser = lazyparser(f, st.st_size, self.indexformat, shaoffset)
       
   393                 self.index = lazyindex(parser)
       
   394                 self.nodemap = lazymap(parser)
       
   395             else:
       
   396                 self._parseindex(f, st)
       
   397             if self.version != REVLOGV0:
   400             if self.version != REVLOGV0:
   398                 e = list(self.index[0])
   401                 e = list(self.index[0])
   399                 type = gettype(e[0])
   402                 type = gettype(e[0])
   400                 e[0] = offset_type(0, type)
   403                 e[0] = offset_type(0, type)
   401                 self.index[0] = e
   404                 self.index[0] = e
   402         else:
   405             return
   403             self.nodemap = {nullid: nullrev}
   406 
   404             self.index = []
       
   405 
       
   406     def _parseindex(self, fp, st):
       
   407         s = struct.calcsize(self.indexformat)
   407         s = struct.calcsize(self.indexformat)
   408         self.index = []
   408         self.index = []
   409         self.nodemap =  {nullid: nullrev}
   409         self.nodemap =  {nullid: nullrev}
   410         inline = self._inline()
   410         inline = self._inline()
   411         n = 0
   411         n = 0
   445                         fp.read(off - l)
   445                         fp.read(off - l)
   446                         break
   446                         break
   447             if not st:
   447             if not st:
   448                 break
   448                 break
   449 
   449 
       
   450         if self.version != REVLOGV0:
       
   451             e = list(self.index[0])
       
   452             type = gettype(e[0])
       
   453             e[0] = offset_type(0, type)
       
   454             self.index[0] = e
   450 
   455 
   451     def _loadindex(self, start, end):
   456     def _loadindex(self, start, end):
   452         """load a block of indexes all at once from the lazy parser"""
   457         """load a block of indexes all at once from the lazy parser"""
   453         if isinstance(self.index, lazyindex):
   458         if isinstance(self.index, lazyindex):
   454             self.index.p.loadindex(start, end)
   459             self.index.p.loadindex(start, end)