mercurial/revlog.py
changeset 47387 75e1104f23a2
parent 47386 0d0fb091c49f
child 47389 e6292eb33384
equal deleted inserted replaced
47386:0d0fb091c49f 47387:75e1104f23a2
   800                 func = self._indexfp
   800                 func = self._indexfp
   801             else:
   801             else:
   802                 func = self._datafp
   802                 func = self._datafp
   803             with func() as fp:
   803             with func() as fp:
   804                 yield fp
   804                 yield fp
       
   805 
       
   806     def _sidedatareadfp(self):
       
   807         """file object suitable to read sidedata"""
       
   808         return self._datareadfp()
   805 
   809 
   806     def tiprev(self):
   810     def tiprev(self):
   807         return len(self.index) - 1
   811         return len(self.index) - 1
   808 
   812 
   809     def tip(self):
   813     def tip(self):
  2066         if self._inline:
  2070         if self._inline:
  2067             sidedata_offset += self.index.entry_size * (1 + rev)
  2071             sidedata_offset += self.index.entry_size * (1 + rev)
  2068         if sidedata_size == 0:
  2072         if sidedata_size == 0:
  2069             return {}
  2073             return {}
  2070 
  2074 
  2071         comp_segment = self._getsegment(sidedata_offset, sidedata_size)
  2075         # XXX this need caching, as we do for data
       
  2076         with self._sidedatareadfp() as sdf:
       
  2077             sdf.seek(sidedata_offset)
       
  2078             comp_segment = sdf.read(sidedata_size)
       
  2079 
       
  2080             if len(comp_segment) < sidedata_size:
       
  2081                 filename = self._datafile
       
  2082                 length = sidedata_size
       
  2083                 offset = sidedata_offset
       
  2084                 got = len(comp_segment)
       
  2085                 m = PARTIAL_READ_MSG % (filename, length, offset, got)
       
  2086                 raise error.RevlogError(m)
       
  2087 
  2072         comp = self.index[rev][11]
  2088         comp = self.index[rev][11]
  2073         if comp == COMP_MODE_PLAIN:
  2089         if comp == COMP_MODE_PLAIN:
  2074             segment = comp_segment
  2090             segment = comp_segment
  2075         elif comp == COMP_MODE_DEFAULT:
  2091         elif comp == COMP_MODE_DEFAULT:
  2076             segment = self._decompressor(comp_segment)
  2092             segment = self._decompressor(comp_segment)