931 # check rev flags |
931 # check rev flags |
932 if self.index[rev][0] & 0xFFFF: |
932 if self.index[rev][0] & 0xFFFF: |
933 raise RevlogError(_('incompatible revision flag %x') % |
933 raise RevlogError(_('incompatible revision flag %x') % |
934 (self.index[rev][0] & 0xFFFF)) |
934 (self.index[rev][0] & 0xFFFF)) |
935 |
935 |
936 if self._inline: |
936 df = None |
937 # we probably have the whole chunk cached |
|
938 df = None |
|
939 else: |
|
940 df = self.opener(self.datafile) |
|
941 |
937 |
942 # do we have useful data cached? |
938 # do we have useful data cached? |
943 if self._cache and self._cache[1] >= base and self._cache[1] < rev: |
939 if self._cache and self._cache[1] >= base and self._cache[1] < rev: |
944 base = self._cache[1] |
940 base = self._cache[1] |
945 text = str(self._cache[2]) |
941 text = str(self._cache[2]) |
946 self._loadindex(base, rev + 1) |
942 self._loadindex(base, rev + 1) |
|
943 if not self._inline and rev > base + 1: |
|
944 df = self.opener(self.datafile) |
947 else: |
945 else: |
948 self._loadindex(base, rev + 1) |
946 self._loadindex(base, rev + 1) |
|
947 if not self._inline and rev > base: |
|
948 df = self.opener(self.datafile) |
949 text = self.chunk(base, df=df) |
949 text = self.chunk(base, df=df) |
950 |
950 |
951 bins = [self.chunk(r, df) for r in xrange(base + 1, rev + 1)] |
951 bins = [self.chunk(r, df) for r in xrange(base + 1, rev + 1)] |
952 text = mdiff.patches(text, bins) |
952 text = mdiff.patches(text, bins) |
953 p1, p2 = self.parents(node) |
953 p1, p2 = self.parents(node) |