mercurial/revlog.py
changeset 8318 6b8513f8274a
parent 8317 5cdf4067857a
child 8391 27bffd81d265
equal deleted inserted replaced
8317:5cdf4067857a 8318:6b8513f8274a
   947                 return d # avoid a copy
   947                 return d # avoid a copy
   948             return d[cachestart:cacheend]
   948             return d[cachestart:cacheend]
   949 
   949 
   950         return self._loadchunk(offset, length, df)
   950         return self._loadchunk(offset, length, df)
   951 
   951 
       
   952     def _prime(self, startrev, endrev, df):
       
   953         start = self.start(startrev)
       
   954         end = self.end(endrev)
       
   955         if self._inline:
       
   956             start += (startrev + 1) * self._io.size
       
   957             end += (startrev + 1) * self._io.size
       
   958         self._loadchunk(start, end - start, df)
       
   959 
   952     def chunk(self, rev, df=None):
   960     def chunk(self, rev, df=None):
   953         start, length = self.start(rev), self.length(rev)
   961         start, length = self.start(rev), self.length(rev)
   954         if self._inline:
   962         if self._inline:
   955             start += (rev + 1) * self._io.size
   963             start += (rev + 1) * self._io.size
   956         return decompress(self._getchunk(start, length, df))
   964         return decompress(self._getchunk(start, length, df))
   987             base = self._cache[1]
   995             base = self._cache[1]
   988             text = str(self._cache[2])
   996             text = str(self._cache[2])
   989             self._loadindex(base, rev + 1)
   997             self._loadindex(base, rev + 1)
   990             if not self._inline and rev > base + 1:
   998             if not self._inline and rev > base + 1:
   991                 df = self.opener(self.datafile)
   999                 df = self.opener(self.datafile)
       
  1000                 self._prime(base, rev, df)
   992         else:
  1001         else:
   993             self._loadindex(base, rev + 1)
  1002             self._loadindex(base, rev + 1)
   994             if not self._inline and rev > base:
  1003             if not self._inline and rev > base:
   995                 df = self.opener(self.datafile)
  1004                 df = self.opener(self.datafile)
       
  1005                 self._prime(base, rev, df)
   996             text = self.chunk(base, df=df)
  1006             text = self.chunk(base, df=df)
   997 
  1007 
   998         bins = [self.chunk(r, df) for r in xrange(base + 1, rev + 1)]
  1008         bins = [self.chunk(r, df) for r in xrange(base + 1, rev + 1)]
   999         text = mdiff.patches(text, bins)
  1009         text = mdiff.patches(text, bins)
  1000         p1, p2 = self.parents(node)
  1010         p1, p2 = self.parents(node)