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