##// END OF EJS Templates
revlog: introduce an explicit NodeMap class for pure code...
marmoute -
r43924:a7c0c5b5 default
parent child Browse files
Show More
@@ -65,6 +65,7 b' from . import ('
65 65 mdiff,
66 66 policy,
67 67 pycompat,
68 revlogutils,
68 69 templatefilters,
69 70 util,
70 71 )
@@ -217,7 +218,7 b' class revlogoldio(object):'
217 218 def parseindex(self, data, inline):
218 219 s = self.size
219 220 index = []
220 nodemap = {nullid: nullrev}
221 nodemap = revlogutils.NodeMap({nullid: nullrev})
221 222 n = off = 0
222 223 l = len(data)
223 224 while off + s <= l:
@@ -375,7 +376,7 b' class revlog(object):'
375 376 # Mapping of partial identifiers to full nodes.
376 377 self._pcache = {}
377 378 # Mapping of revision integer to full node.
378 self._nodecache = {nullid: nullrev}
379 self._nodecache = revlogutils.NodeMap({nullid: nullrev})
379 380 self._nodepos = None
380 381 self._compengine = b'zlib'
381 382 self._compengineopts = {}
@@ -652,7 +653,7 b' class revlog(object):'
652 653 # object.
653 654 self._nodecache.clearcaches()
654 655 except AttributeError:
655 self._nodecache = {nullid: nullrev}
656 self._nodecache = revlogutils.NodeMap({nullid: nullrev})
656 657 self._nodepos = None
657 658
658 659 def rev(self, node):
@@ -661,11 +662,12 b' class revlog(object):'
661 662 except TypeError:
662 663 raise
663 664 except error.RevlogError:
665 if not isinstance(self._nodecache, revlogutils.NodeMap):
664 666 # parsers.c radix tree lookup failed
665 667 if node == wdirid or node in wdirfilenodeids:
666 668 raise error.WdirUnsupported
667 669 raise error.LookupError(node, self.indexfile, _(b'no node'))
668 except KeyError:
670 else:
669 671 # pure python cache lookup failed
670 672 n = self._nodecache
671 673 i = self.index
@@ -0,0 +1,14 b''
1 # mercurial.revlogutils -- basic utilities for revlog
2 #
3 # Copyright 2019 Pierre-Yves David <pierre-yves.david@octobus.net>
4 #
5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2 or any later version.
7
8 from __future__ import absolute_import
9 from .. import error
10
11
12 class NodeMap(dict):
13 def __missing__(self, x):
14 raise error.RevlogError('unknown node: %s' % x)
General Comments 0
You need to be logged in to leave comments. Login now