diff -r 49a8c2cc7978 -r 901e749ca0e1 mercurial/scmutil.py --- a/mercurial/scmutil.py Mon Mar 19 20:23:27 2018 +0900 +++ b/mercurial/scmutil.py Sun Apr 08 08:06:34 2018 -0700 @@ -433,6 +433,15 @@ hexfunc = short return '%d:%s' % (rev, hexfunc(node)) +def resolvepartialhexnodeid(repo, prefix): + # Uses unfiltered repo because it's faster when then prefix is ambiguous/ + # This matches the "shortest" template function. + node = repo.unfiltered().changelog._partialmatch(prefix) + if node is None: + return + repo.changelog.rev(node) # make sure node isn't filtered + return node + def isrevsymbol(repo, symbol): try: revsymbol(repo, symbol)