diff -r 46ab0c6b28dc -r 7f366dd3df1f mercurial/hg.py --- a/mercurial/hg.py Wed Jan 30 19:29:32 2019 -0500 +++ b/mercurial/hg.py Wed Jan 30 17:22:07 2019 -0800 @@ -38,6 +38,7 @@ narrowspec, node, phases, + pycompat, repository as repositorymod, scmutil, sshpeer, @@ -57,7 +58,15 @@ def _local(path): path = util.expandpath(util.urllocalpath(path)) - return (os.path.isfile(path) and bundlerepo or localrepo) + + try: + isfile = os.path.isfile(path) + # Python 2 raises TypeError, Python 3 ValueError. + except (TypeError, ValueError) as e: + raise error.Abort(_('invalid path %s: %s') % ( + path, pycompat.bytestr(e))) + + return isfile and bundlerepo or localrepo def addbranchrevs(lrepo, other, branches, revs): peer = other.peer() # a courtesy to callers using a localrepo for other