diff mercurial/revlog.py @ 37819:ee3d58b4a47f stable

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
author Martin von Zweigbergk <martinvonz@google.com>
date Wed, 25 Apr 2018 09:24:07 -0700
parents 44d1959acb3b
children 858c7bfb3f49
line wrap: on
line diff
--- 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