revlog: make pure version of _partialmatch() support 40-byte hex nodeids
Without this patch, test-histedit-arguments.t would fail when run with
--pure. It turned out to be because the pure version of
_partialmatch() does not support full 40-byte hex nodeids. When
histedit's instructions include things like "pick tip", it resolves
the "tip" revision early to a full nodeid (but plain hex nodeid
prefixes are not resolved to full nodeids). Then the nodeid (full or
not) is looked up using to a full nodeid later. This step is what
fails in pure mode. It has been failing since my c4131138eadb
(histedit: look up partial nodeid as partial nodeid, 2018-04-06). I
haven't verified, but I suspect histedit instructions like "pick <full
hex nodeid>" would have been failing before my commit too, though.
The fix is trivial: change a "< 40" to "<= 40".
Differential Revision: https://phab.mercurial-scm.org/D3428
--- a/mercurial/revlog.py Tue Apr 24 13:55:25 2018 -0700
+++ b/mercurial/revlog.py Wed Apr 25 09:24:07 2018 -0700
@@ -1466,7 +1466,7 @@
if id in self._pcache:
return self._pcache[id]
- if len(id) < 40:
+ if len(id) <= 40:
try:
# hex(node)[:...]
l = len(id) // 2 # grab an even number of digits