revsymbol: stop delegating to repo.__getitem__ for unhandled symbols (API)
authorMartin von Zweigbergk <martinvonz@google.com>
Sun, 08 Apr 2018 09:28:08 -0700
changeset 37531 6639ac97ec3b
parent 37530 35b34202dd3b
child 37532 8475c9bf096d
revsymbol: stop delegating to repo.__getitem__ for unhandled symbols (API) The only remaining cases where we were delegating unhandled symbols to repo.__getitem__ should now be when the symbol could not be found. In that case we just delegated to repo.__getitem__ for the error message. Let's just copy the error message instead. If there were any cases where we got e.g. a binary nodeid or an integer revnum into revsymbol() (e.g. via repo.lookup()), we'd now start raising an exception instead. That is why this is marked (API). This affects one test case, but the new behavior seems better to me. I can't tell if the old behavior was desired or if the test was just there to document how it happened to work. Differential Revision: https://phab.mercurial-scm.org/D3196
mercurial/scmutil.py
tests/test-pull.t
--- a/mercurial/scmutil.py	Sun Apr 08 09:28:49 2018 -0700
+++ b/mercurial/scmutil.py	Sun Apr 08 09:28:08 2018 -0700
@@ -503,7 +503,7 @@
             rev = repo.changelog.rev(node)
             return repo[rev]
 
-        return repo[symbol]
+        raise error.RepoLookupError(_("unknown revision '%s'") % symbol)
 
     except error.WdirUnsupported:
         return repo[None]
--- a/tests/test-pull.t	Sun Apr 08 09:28:49 2018 -0700
+++ b/tests/test-pull.t	Sun Apr 08 09:28:08 2018 -0700
@@ -72,7 +72,7 @@
   [255]
   $ hg pull -r 'xxxxxxxxxxxxxxxxxx y'
   pulling from http://foo@localhost:$HGPORT/
-  abort: unknown revision '7878787878787878787878787878787878782079'!
+  abort: unknown revision 'xxxxxxxxxxxxxxxxxx y'!
   [255]
 
 Issue622: hg init && hg pull -u URL doesn't checkout default branch