Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revlog.py @ 16375:d7d64b89a65c
revlog: allow retrieving contents by revision number
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 08 Apr 2012 12:38:02 -0500 |
parents | 29c2ff719715 |
children | e8d37b78acfb |
comparison
equal
deleted
inserted
replaced
16374:29c2ff719715 | 16375:d7d64b89a65c |
---|---|
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)) |