mercurial/scmutil.py
changeset 37527 1c09481acdcc
parent 37504 901e749ca0e1
child 37528 d2b484eed1ec
--- a/mercurial/scmutil.py	Tue Apr 10 19:32:08 2018 +0530
+++ b/mercurial/scmutil.py	Fri Apr 06 23:39:40 2018 -0700
@@ -461,7 +461,26 @@
                "repo[symbol]?" % (symbol, type(symbol)))
         raise error.ProgrammingError(msg)
     try:
+        if symbol in ('.', 'tip', 'null'):
+            return repo[symbol]
+
+        try:
+            r = int(symbol)
+            if '%d' % r != symbol:
+                raise ValueError
+            l = len(repo.changelog)
+            if r < 0:
+                r += l
+            if r < 0 or r >= l and r != wdirrev:
+                raise ValueError
+            return repo[r]
+        except error.FilteredIndexError:
+            raise
+        except (ValueError, OverflowError, IndexError):
+            pass
+
         return repo[symbol]
+
     except (error.FilteredIndexError, error.FilteredLookupError,
             error.FilteredRepoLookupError):
         raise _filterederror(repo, symbol)