mercurial/hg.py
changeset 49693 ebb5e38fdafc
parent 49692 c0acf5440fe1
child 49694 c4731eee1c8f
--- a/mercurial/hg.py	Tue Nov 29 22:04:23 2022 +0100
+++ b/mercurial/hg.py	Tue Nov 29 22:21:19 2022 +0100
@@ -231,19 +231,22 @@
     createopts=None,
 ):
     """return a repository object for the specified path"""
-    peer = _peerorrepo(
+    scheme = urlutil.url(path).scheme
+    if scheme is None:
+        scheme = b'file'
+    cls = repo_schemes.get(scheme)
+    if cls is None:
+        if scheme in peer_schemes:
+            raise error.Abort(_(b"repository '%s' is not local") % path)
+        cls = LocalFactory
+    repo = cls.instance(
         ui,
         path,
         create,
-        presetupfuncs=presetupfuncs,
         intents=intents,
         createopts=createopts,
     )
-    repo = peer.local()
-    if not repo:
-        raise error.Abort(
-            _(b"repository '%s' is not local") % (path or peer.url())
-        )
+    _setup_repo_or_peer(ui, repo, presetupfuncs=presetupfuncs)
     return repo.filtered(b'visible')