paths: move path validation logic to its own function

Hard coding the '.hg' path in the paths class made it difficult for the hggit
extension to pull from gitrepos.

This patch moves the logic out to it's own function so extensions can add
additional checks to what is a valid path (i.e. a git repo is valid when hggit
is enabled).
This commit is contained in:
Durham Goode 2015-08-24 19:33:36 -07:00
parent e4a0ef9ede
commit 19ed8b04d1

View File

@ -1068,11 +1068,17 @@ class path(object):
# When given a raw location but not a symbolic name, validate the
# location is valid.
if (not name and not u.scheme
and not os.path.isdir(os.path.join(str(u), '.hg'))):
if not name and not u.scheme and not self._isvalidlocalpath(self.loc):
raise ValueError('location is not a URL or path to a local '
'repo: %s' % rawloc)
def _isvalidlocalpath(self, path):
"""Returns True if the given path is a potentially valid repository.
This is its own function so that extensions can change the definition of
'valid' in this case (like when pulling from a git repo into a hg
one)."""
return os.path.isdir(os.path.join(path, '.hg'))
@property
def pushloc(self):
return self._pushloc or self.loc