comparison mercurial/revlog.py @ 42981:35ab2c1a58aa

revlog: return sidedata map from `_revisiondata` Nothing extra any side data yet. However, it will happens in the future. So we better prepare the callers of the `_revisiondata` to deal with it. Differential Revision: https://phab.mercurial-scm.org/D6809
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 03 Sep 2019 22:54:04 +0200
parents 0d1272783f24
children 9d62f9fa332f
comparison
equal deleted inserted replaced
42980:0d1272783f24 42981:35ab2c1a58aa
1612 """ 1612 """
1613 if raw: 1613 if raw:
1614 msg = ('revlog.revision(..., raw=True) is deprecated, ' 1614 msg = ('revlog.revision(..., raw=True) is deprecated, '
1615 'use revlog.rawdata(...)') 1615 'use revlog.rawdata(...)')
1616 util.nouideprecwarn(msg, '5.2', stacklevel=2) 1616 util.nouideprecwarn(msg, '5.2', stacklevel=2)
1617 return self._revisiondata(nodeorrev, _df, raw=raw) 1617 return self._revisiondata(nodeorrev, _df, raw=raw)[0]
1618 1618
1619 def sidedata(self, nodeorrev, _df=None): 1619 def sidedata(self, nodeorrev, _df=None):
1620 """a map of extra data related to the changeset but not part of the hash 1620 """a map of extra data related to the changeset but not part of the hash
1621 1621
1622 This function currently return a dictionary. However, more advanced 1622 This function currently return a dictionary. However, more advanced
1635 node = nodeorrev 1635 node = nodeorrev
1636 rev = None 1636 rev = None
1637 1637
1638 # fast path the special `nullid` rev 1638 # fast path the special `nullid` rev
1639 if node == nullid: 1639 if node == nullid:
1640 return "" 1640 return "", {}
1641 1641
1642 # The text as stored inside the revlog. Might be the revision or might 1642 # The text as stored inside the revlog. Might be the revision or might
1643 # need to be processed to retrieve the revision. 1643 # need to be processed to retrieve the revision.
1644 rawtext = None 1644 rawtext = None
1645 1645
1646 rev, rawtext, validated = self._rawtext(node, rev, _df=_df) 1646 rev, rawtext, validated = self._rawtext(node, rev, _df=_df)
1647 1647
1648 if raw and validated: 1648 if raw and validated:
1649 # if we don't want to process the raw text and that raw 1649 # if we don't want to process the raw text and that raw
1650 # text is cached, we can exit early. 1650 # text is cached, we can exit early.
1651 return rawtext 1651 return rawtext, {}
1652 if rev is None: 1652 if rev is None:
1653 rev = self.rev(node) 1653 rev = self.rev(node)
1654 # the revlog's flag for this revision 1654 # the revlog's flag for this revision
1655 # (usually alter its state or content) 1655 # (usually alter its state or content)
1656 flags = self.flags(rev) 1656 flags = self.flags(rev)
1657 1657
1658 if validated and flags == REVIDX_DEFAULT_FLAGS: 1658 if validated and flags == REVIDX_DEFAULT_FLAGS:
1659 # no extra flags set, no flag processor runs, text = rawtext 1659 # no extra flags set, no flag processor runs, text = rawtext
1660 return rawtext 1660 return rawtext, {}
1661 1661
1662 sidedata = {}
1662 if raw: 1663 if raw:
1663 validatehash = self._processflagsraw(rawtext, flags) 1664 validatehash = self._processflagsraw(rawtext, flags)
1664 text = rawtext 1665 text = rawtext
1665 else: 1666 else:
1666 text, validatehash = self._processflagsread(rawtext, flags) 1667 text, validatehash = self._processflagsread(rawtext, flags)
1667 if validatehash: 1668 if validatehash:
1668 self.checkhash(text, node, rev=rev) 1669 self.checkhash(text, node, rev=rev)
1669 if not validated: 1670 if not validated:
1670 self._revisioncache = (node, rev, rawtext) 1671 self._revisioncache = (node, rev, rawtext)
1671 1672
1672 return text 1673 return text, sidedata
1673 1674
1674 def _rawtext(self, node, rev, _df=None): 1675 def _rawtext(self, node, rev, _df=None):
1675 """return the possibly unvalidated rawtext for a revision 1676 """return the possibly unvalidated rawtext for a revision
1676 1677
1677 returns (rev, rawtext, validated) 1678 returns (rev, rawtext, validated)
1717 def rawdata(self, nodeorrev, _df=None): 1718 def rawdata(self, nodeorrev, _df=None):
1718 """return an uncompressed raw data of a given node or revision number. 1719 """return an uncompressed raw data of a given node or revision number.
1719 1720
1720 _df - an existing file handle to read from. (internal-only) 1721 _df - an existing file handle to read from. (internal-only)
1721 """ 1722 """
1722 return self._revisiondata(nodeorrev, _df, raw=True) 1723 return self._revisiondata(nodeorrev, _df, raw=True)[0]
1723 1724
1724 def hash(self, text, p1, p2): 1725 def hash(self, text, p1, p2):
1725 """Compute a node hash. 1726 """Compute a node hash.
1726 1727
1727 Available as a function so that subclasses can replace the hash 1728 Available as a function so that subclasses can replace the hash