revlog: move references to revlog.hash to inside the revlog class
This will make it possible for subclasses to have different hashing
schemes when appropriate. I anticipate using this in manifests.
Note that there's still one client of mercurial.revlog.hash() outside
of revlog: mercurial.context.memctx uses it to construct the file
entries in an in-memory manifest. I don't think this will be a problem
in the immediate future, so I've left it as-is.
--- a/mercurial/revlog.py Wed Sep 24 15:10:52 2014 -0400
+++ b/mercurial/revlog.py Wed Sep 24 15:14:44 2014 -0400
@@ -1036,13 +1036,21 @@
self._cache = (node, rev, text)
return text
+ def hash(self, text, p1, p2):
+ """Compute a node hash.
+
+ Available as a function so that subclasses can replace the hash
+ as needed.
+ """
+ return hash(text, p1, p2)
+
def _checkhash(self, text, node, rev):
p1, p2 = self.parents(node)
self.checkhash(text, p1, p2, node, rev)
return text
def checkhash(self, text, p1, p2, node, rev=None):
- if node != hash(text, p1, p2):
+ if node != self.hash(text, p1, p2):
revornode = rev
if revornode is None:
revornode = templatefilters.short(hex(node))
@@ -1104,7 +1112,7 @@
if link == nullrev:
raise RevlogError(_("attempted to add linkrev -1 to %s")
% self.indexfile)
- node = node or hash(text, p1, p2)
+ node = node or self.hash(text, p1, p2)
if node in self.nodemap:
return node