[PATCH] paths: move path validation logic to its own function

Augie Fackler raf at durin42.com
Thu Aug 27 15:17:10 UTC 2015


On Tue, Aug 25, 2015 at 09:36:04PM -0700, Durham Goode wrote:
> # HG changeset patch
> # User Durham Goode <durham at fb.com>
> # Date 1440470016 25200
> #      Mon Aug 24 19:33:36 2015 -0700
> # Node ID f1776bd34bbe096e356a25e8255669fb7340db1b
> # Parent  05e7f57c74ac5b556b49870af86f61aa0c54babb
> paths: move path validation logic to its own function

Queued this, thanks!

>
> 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 --git a/mercurial/ui.py b/mercurial/ui.py
> --- a/mercurial/ui.py
> +++ b/mercurial/ui.py
> @@ -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
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel



More information about the Mercurial-devel mailing list