# HG changeset patch # User Durham Goode # Date 1440470016 25200 # Node ID cebf7e48365e12fafb405a5746f4df94133fec02 # Parent e7e7182564f60622bd98083e94af3da74d597eaa 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). diff -r e7e7182564f6 -r cebf7e48365e mercurial/ui.py --- a/mercurial/ui.py Fri Aug 21 14:33:51 2015 -0400 +++ b/mercurial/ui.py Mon Aug 24 19:33:36 2015 -0700 @@ -1068,11 +1068,17 @@ # 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