revlog: fix pure version of _partialmatch() to include nullid
Before this patch, test-
issue842.t and a few more tests fail when they
try to refer to the null revision by using a "000.." prefix of it (or
because they use the "shortest" template function which internally
does that).
This should have been part of my
a3dacabd476b (index: don't allow
index[len(index)] to mean nullid, 2018-07-20), but I had forgotten to
update another part of the pure code there, so it didn't fail until
a1f934573c0b (parsers: adjust pure-python version to mimic
a3dacabd476b, 2018-08-09) and
65d5de1169dd (revlog: fix pure nodemap
to not access missing index entry, 2018-08-17) fixed the other things
I had missed.
Differential Revision: https://phab.mercurial-scm.org/D4332
--- a/mercurial/revlog.py Sat Aug 18 15:15:04 2018 -0400
+++ b/mercurial/revlog.py Sat Aug 18 23:17:06 2018 -0700
@@ -27,6 +27,7 @@
from .node import (
bin,
hex,
+ nullhex,
nullid,
nullrev,
wdirfilenodeids,
@@ -1853,6 +1854,8 @@
nl = [e[7] for e in self.index if e[7].startswith(prefix)]
nl = [n for n in nl if hex(n).startswith(id) and
self.hasnode(n)]
+ if nullhex.startswith(id):
+ nl.append(nullid)
if len(nl) > 0:
if len(nl) == 1 and not maybewdir:
self._pcache[id] = nl[0]