mercurial/ui.py
changeset 26189 663fbc336e22
parent 26076 cebf7e48365e
child 26235 6c962145f523
--- a/mercurial/ui.py	Mon Sep 07 21:58:17 2015 +0900
+++ b/mercurial/ui.py	Sun Sep 06 11:28:48 2015 -0700
@@ -550,9 +550,21 @@
 
     def expandpath(self, loc, default=None):
         """Return repository location relative to cwd or from [paths]"""
-        p = self.paths.getpath(loc, default=default)
-        if p:
-            return p.rawloc
+        try:
+            p = self.paths.getpath(loc)
+            if p:
+                return p.rawloc
+        except error.RepoError:
+            pass
+
+        if default:
+            try:
+                p = self.paths.getpath(default)
+                if p:
+                    return p.rawloc
+            except error.RepoError:
+                pass
+
         return loc
 
     @util.propertycache
@@ -1014,9 +1026,24 @@
         ``name`` can be a named path or locations. Locations are filesystem
         paths or URIs.
 
-        Returns the first of ``name`` or ``default`` that is present, or None
-        if neither is present.
+        Returns None if ``name`` is not a registered path, a URI, or a local
+        path to a repo.
         """
+        # Only fall back to default if no path was requested.
+        if name is None:
+            if default:
+                try:
+                    return self[default]
+                except KeyError:
+                    return None
+            else:
+                return None
+
+        # Most likely empty string.
+        # This may need to raise in the future.
+        if not name:
+            return None
+
         try:
             return self[name]
         except KeyError:
@@ -1024,15 +1051,10 @@
             try:
                 return path(None, rawloc=name)
             except ValueError:
-                pass
+                raise error.RepoError(_('repository %s does not exist') %
+                                        name)
 
-            if default is not None:
-                try:
-                    return self[default]
-                except KeyError:
-                    pass
-
-        return None
+        assert False
 
 class path(object):
     """Represents an individual path and its configuration."""