856 return self._chunk(rev2) |
856 return self._chunk(rev2) |
857 |
857 |
858 return mdiff.textdiff(self.revision(self.node(rev1)), |
858 return mdiff.textdiff(self.revision(self.node(rev1)), |
859 self.revision(self.node(rev2))) |
859 self.revision(self.node(rev2))) |
860 |
860 |
861 def revision(self, node): |
861 def revision(self, nodeorrev): |
862 """return an uncompressed revision of a given node""" |
862 """return an uncompressed revision of a given node or""" |
|
863 if isinstance(nodeorrev, int): |
|
864 rev = nodeorrev |
|
865 node = self.node(rev) |
|
866 else: |
|
867 node = nodeorrev |
|
868 rev = None |
|
869 |
863 cachedrev = None |
870 cachedrev = None |
864 if node == nullid: |
871 if node == nullid: |
865 return "" |
872 return "" |
866 if self._cache: |
873 if self._cache: |
867 if self._cache[0] == node: |
874 if self._cache[0] == node: |
868 return self._cache[2] |
875 return self._cache[2] |
869 cachedrev = self._cache[1] |
876 cachedrev = self._cache[1] |
870 |
877 |
871 # look up what we need to read |
878 # look up what we need to read |
872 text = None |
879 text = None |
873 rev = self.rev(node) |
880 if rev is None: |
|
881 rev = self.rev(node) |
874 |
882 |
875 # check rev flags |
883 # check rev flags |
876 if self.flags(rev) & ~REVIDX_KNOWN_FLAGS: |
884 if self.flags(rev) & ~REVIDX_KNOWN_FLAGS: |
877 raise RevlogError(_('incompatible revision flag %x') % |
885 raise RevlogError(_('incompatible revision flag %x') % |
878 (self.flags(rev) & ~REVIDX_KNOWN_FLAGS)) |
886 (self.flags(rev) & ~REVIDX_KNOWN_FLAGS)) |