diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -488,20 +488,14 @@ except error.RepoLookupError: return False -def revsymbol(repo, symbol): - """Returns a context given a single revision symbol (as string). - - This is similar to revsingle(), but accepts only a single revision symbol, - i.e. things like ".", "tip", "1234", "deadbeef", "my-bookmark" work, but - not "max(public())". - """ +def _revsymbol(repo, symbol): if not isinstance(symbol, bytes): msg = ("symbol (%s of type %s) was not a string, did you mean " "repo[symbol]?" % (symbol, type(symbol))) raise error.ProgrammingError(msg) try: if symbol in ('.', 'tip', 'null'): - return repo[symbol] + return [repo[symbol]] try: r = int(symbol) @@ -512,7 +506,7 @@ r += l if r < 0 or r >= l and r != wdirrev: raise ValueError - return repo[r] + return [repo[r]] except error.FilteredIndexError: raise except (ValueError, OverflowError, IndexError): @@ -522,7 +516,7 @@ try: node = bin(symbol) rev = repo.changelog.rev(node) - return repo[rev] + return [repo[rev]] except error.FilteredLookupError: raise except (TypeError, LookupError): @@ -532,23 +526,34 @@ try: node = repo.names.singlenode(repo, symbol) rev = repo.changelog.rev(node) - return repo[rev] + return [repo[rev]] except KeyError: pass node = resolvehexnodeidprefix(repo, symbol) if node is not None: rev = repo.changelog.rev(node) - return repo[rev] + return [repo[rev]] raise error.RepoLookupError(_("unknown revision '%s'") % symbol) except error.WdirUnsupported: - return repo[None] + return [repo[None]] except (error.FilteredIndexError, error.FilteredLookupError, error.FilteredRepoLookupError): raise _filterederror(repo, symbol) +def revsymbol(repo, symbol): + """Returns a context given a single revision symbol (as string). + + This is similar to revsingle(), but accepts only a single revision symbol, + i.e. things like ".", "tip", "1234", "deadbeef", "my-bookmark" work, but + not "max(public())". + """ + ctxs = _revsymbol(repo, symbol) + assert len(ctxs) == 1 + return ctxs[0] + def _filterederror(repo, changeid): """build an exception to be raised about a filtered changeid