--- a/contrib/perf.py Mon Aug 27 08:52:33 2018 -0700
+++ b/contrib/perf.py Wed Aug 15 19:45:39 2018 +0000
@@ -861,7 +861,21 @@
ctx = scmutil.revsingle(repo, rev, rev)
t = ctx.manifestnode()
else:
- t = repo.manifestlog._revlog.lookup(rev)
+ from mercurial.node import bin
+
+ if len(rev) == 40:
+ t = bin(rev)
+ else:
+ try:
+ rev = int(rev)
+
+ if util.safehasattr(repo.manifestlog, 'getstorage'):
+ t = repo.manifestlog.getstorage(b'').node(rev)
+ else:
+ t = repo.manifestlog._revlog.lookup(rev)
+ except ValueError:
+ raise error.Abort('manifest revision must be integer or full '
+ 'node')
def d():
repo.manifestlog.clearcaches(clear_persisted_data=clear_disk)
repo.manifestlog[t].read()