# HG changeset patch # User Martin von Zweigbergk # Date 2018-04-25 16:24:07 # Node ID ee3d58b4a47fda30f66d3f710a9b1478a259a760 # Parent 877185de62cf6933142118c87eb702a77f0896fb 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 " 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 diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -1466,7 +1466,7 @@ class revlog(object): 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