mercurial/ui.py
changeset 26189 663fbc336e22
parent 26076 cebf7e48365e
child 26235 6c962145f523
equal deleted inserted replaced
26188:662ea52d5dca 26189:663fbc336e22
   548             user = util.shortuser(user)
   548             user = util.shortuser(user)
   549         return user
   549         return user
   550 
   550 
   551     def expandpath(self, loc, default=None):
   551     def expandpath(self, loc, default=None):
   552         """Return repository location relative to cwd or from [paths]"""
   552         """Return repository location relative to cwd or from [paths]"""
   553         p = self.paths.getpath(loc, default=default)
   553         try:
   554         if p:
   554             p = self.paths.getpath(loc)
   555             return p.rawloc
   555             if p:
       
   556                 return p.rawloc
       
   557         except error.RepoError:
       
   558             pass
       
   559 
       
   560         if default:
       
   561             try:
       
   562                 p = self.paths.getpath(default)
       
   563                 if p:
       
   564                     return p.rawloc
       
   565             except error.RepoError:
       
   566                 pass
       
   567 
   556         return loc
   568         return loc
   557 
   569 
   558     @util.propertycache
   570     @util.propertycache
   559     def paths(self):
   571     def paths(self):
   560         return paths(self)
   572         return paths(self)
  1012         """Return a ``path`` from a string, falling back to a default.
  1024         """Return a ``path`` from a string, falling back to a default.
  1013 
  1025 
  1014         ``name`` can be a named path or locations. Locations are filesystem
  1026         ``name`` can be a named path or locations. Locations are filesystem
  1015         paths or URIs.
  1027         paths or URIs.
  1016 
  1028 
  1017         Returns the first of ``name`` or ``default`` that is present, or None
  1029         Returns None if ``name`` is not a registered path, a URI, or a local
  1018         if neither is present.
  1030         path to a repo.
  1019         """
  1031         """
       
  1032         # Only fall back to default if no path was requested.
       
  1033         if name is None:
       
  1034             if default:
       
  1035                 try:
       
  1036                     return self[default]
       
  1037                 except KeyError:
       
  1038                     return None
       
  1039             else:
       
  1040                 return None
       
  1041 
       
  1042         # Most likely empty string.
       
  1043         # This may need to raise in the future.
       
  1044         if not name:
       
  1045             return None
       
  1046 
  1020         try:
  1047         try:
  1021             return self[name]
  1048             return self[name]
  1022         except KeyError:
  1049         except KeyError:
  1023             # Try to resolve as a local path or URI.
  1050             # Try to resolve as a local path or URI.
  1024             try:
  1051             try:
  1025                 return path(None, rawloc=name)
  1052                 return path(None, rawloc=name)
  1026             except ValueError:
  1053             except ValueError:
  1027                 pass
  1054                 raise error.RepoError(_('repository %s does not exist') %
  1028 
  1055                                         name)
  1029             if default is not None:
  1056 
  1030                 try:
  1057         assert False
  1031                     return self[default]
       
  1032                 except KeyError:
       
  1033                     pass
       
  1034 
       
  1035         return None
       
  1036 
  1058 
  1037 class path(object):
  1059 class path(object):
  1038     """Represents an individual path and its configuration."""
  1060     """Represents an individual path and its configuration."""
  1039 
  1061 
  1040     def __init__(self, name, rawloc=None, pushloc=None):
  1062     def __init__(self, name, rawloc=None, pushloc=None):