D7313: revlog: move the nodemap into the index object (for pure)

Yuya Nishihara yuya at tcha.org
Sun Nov 10 04:34:39 EST 2019


> @@ -662,29 +665,10 @@
>          except TypeError:
>              raise
>          except error.RevlogError:
> -            if not isinstance(self._nodecache, revlogutils.NodeMap):
> -                # parsers.c radix tree lookup failed
> -                if node == wdirid or node in wdirfilenodeids:
> -                    raise error.WdirUnsupported
> -                raise error.LookupError(node, self.indexfile, _(b'no node'))
> -            else:
> -                # pure python cache lookup failed
> -                n = self._nodecache
> -                i = self.index
> -                p = self._nodepos
> -                if p is None:
> -                    p = len(i) - 1
> -                else:
> -                    assert p < len(i)
> -                for r in pycompat.xrange(p, -1, -1):
> -                    v = i[r][7]
> -                    n[v] = r
> -                    if v == node:
> -                        self._nodepos = r - 1
> -                        return r
> -                if node == wdirid or node in wdirfilenodeids:
> -                    raise error.WdirUnsupported
> -                raise error.LookupError(node, self.indexfile, _(b'no node'))
> +            # parsers.c radix tree lookup failed
> +            if node == wdirid or node in wdirfilenodeids:
> +                raise error.WdirUnsupported
> +            raise error.LookupError(node, self.indexfile, _(b'no node'))

So `revlog._nodepos` is now useless since the node map is no longer built
incrementally.


More information about the Mercurial-devel mailing list