--- 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)