diff mercurial/revlog.py @ 38015:3ac950cd5978

shortest: move revnum-disambiguation out of revlog I want to be able to change how we disambiguate and I think having revlog.shortest() worry only about finding a prefix that's unambiguous among nodeids makes more sense. This slows down `hg log -T '{shortest(node,1)}\n'` from 4.0s to 4.1s. Differential Revision: https://phab.mercurial-scm.org/D3502
author Martin von Zweigbergk <martinvonz@google.com>
date Thu, 03 May 2018 15:57:12 -0700
parents 76e933e0ccc9
children a4942675de6b
line wrap: on
line diff
--- a/mercurial/revlog.py	Thu May 03 15:25:16 2018 -0700
+++ b/mercurial/revlog.py	Thu May 03 15:57:12 2018 -0700
@@ -1502,18 +1502,6 @@
 
     def shortest(self, node, minlength=1):
         """Find the shortest unambiguous prefix that matches node."""
-        def isrev(prefix):
-            try:
-                i = int(prefix)
-                # if we are a pure int, then starting with zero will not be
-                # confused as a rev; or, obviously, if the int is larger
-                # than the value of the tip rev
-                if prefix[0] == '0' or i > len(self):
-                    return False
-                return True
-            except ValueError:
-                return False
-
         def isvalid(prefix):
             try:
                 node = self._partialmatch(prefix)
@@ -1532,9 +1520,10 @@
         hexnode = hex(node)
 
         def disambiguate(hexnode, minlength):
+            """Disambiguate against wdirid."""
             for length in range(minlength, 41):
                 prefix = hexnode[:length]
-                if not isrev(prefix) and not maybewdir(prefix):
+                if not maybewdir(prefix):
                     return prefix
 
         if not getattr(self, 'filteredrevs', None):