diff mercurial/scmutil.py @ 40341:d916ed3ca951

revisions: when using prefixhexnode, ensure we prefix "0" Previously, if using `experimental.revisions.disambiguatewithin` (and it didn't include rev0), and '0' was the shortest identifier in that disambiguation set, we printed it as the shortest *without* a prefix. This was because we had logic to determine "if the prefix is a pure integer, but starts with 0, we don't need to prefix with 'x': 01 is not a synonym for revision #1", but didn't handle the case where prefix == 0 (which is a pure integer, and starts with 0... but it *is* "rev0"). Differential Revision: https://phab.mercurial-scm.org/D5113
author Kyle Lippincott <spectral@google.com>
date Tue, 16 Oct 2018 07:21:00 -0700
parents c554dc0cc16e
children 824b687ff6af
line wrap: on
line diff
--- a/mercurial/scmutil.py	Wed Oct 03 16:45:24 2018 +0300
+++ b/mercurial/scmutil.py	Tue Oct 16 07:21:00 2018 -0700
@@ -477,8 +477,9 @@
         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:1] == b'0' or i >= len(repo):
+        # than the value of the tip rev. We still need to disambiguate if
+        # prefix == '0', since that *is* a valid revnum.
+        if (prefix != b'0' and prefix[0:1] == b'0') or i >= len(repo):
             return False
         return True
     except ValueError: