Mercurial > public > mercurial-scm > hg-stable
diff mercurial/logcmdutil.py @ 48128:5ced12cfa41b
errors: raise InputError on bad revset to revrange() iff provided by the user
Most callers of `scmutil.revrange()` pass in a revset provided by the
user. If there are problems resolving that, it should result in an
`InputError` and exit code 10 (when using detailed exit
codes). However, there are also some callers that pass in revsets not
provided by the user. `InputError` is not appropriate in those
cases. This patch therefore introduces a wrapper around
`scmutil.revrange()` that simply converts the exception type. I put it
in `logcmdutil.py` since that seems to be the lowest-level module in
the (poorly defined) UI layer.
Differential Revision: https://phab.mercurial-scm.org/D11560
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 28 Sep 2021 08:47:11 -0700 |
parents | 0dc4cc654d96 |
children | b74e128676d4 |
line wrap: on
line diff
--- a/mercurial/logcmdutil.py Tue Sep 28 09:08:43 2021 -0700 +++ b/mercurial/logcmdutil.py Tue Sep 28 08:47:11 2021 -0700 @@ -912,6 +912,18 @@ return None +def revrange(repo, specs, localalias=None): + """Resolves user-provided revset(s). + + This just wraps the lower-level scmutil.revrange() in order to raise an + exception indicating user error. + """ + try: + return scmutil.revrange(repo, specs, localalias) + except error.RepoLookupError as e: + raise error.InputError(e.args[0], hint=e.hint) + + _opt2logrevset = { b'no_merges': (b'not merge()', None), b'only_merges': (b'merge()', None), @@ -987,7 +999,7 @@ def _initialrevs(repo, wopts): """Return the initial set of revisions to be filtered or followed""" if wopts.revspec: - revs = scmutil.revrange(repo, wopts.revspec) + revs = revrange(repo, wopts.revspec) elif wopts.follow and repo.dirstate.p1() == repo.nullid: revs = smartset.baseset() elif wopts.follow: