Subject: Re: Error when cloning with weird local directory

From: Torsten Bögershausen <[email-masked]>
Date: Sat, 8 Aug 2015 08:26:25 +0200

On 2015-08-06 09.50, Junio C Hamano wrote:
> Junio C Hamano <[email-masked]> writes:
> 
>> Torsten Bögershausen <[email-masked]> writes:
>>
>>> It looks as if
>>> static char *get_repo_path(const char *repo, int *is_bundle)
>>> in built/clone.c
>>> checks if there is a local directory structure looking like a
>>> .git directory.
>>> This is wrong.
>>
>> It is as designed, though, to allow cloning from a local directory
>> with any name.
I see the point, but this is what I would expect as a user:

git clone ssh://host/path         # Always ssh, never local
git clone ./ssh://host/path       # Always local
git clone host:path               # scp syntax, border case:
                                  # if a git repo host:path exists on disc,
                                  # use it
git clone ./host:path             # local, not scp ('/' before ':')

Beside that, git fetch, git fetch-pack all use the transport helper from
transport.c:
transport
struct transport *transport_get(struct remote *remote, const char *url)

to let the URL being parsed and to make the decision if an URL without a scheme
is ssh or a local file.

So I think that git clone can be slighty more consistant here.

>>
>>> There should be a check for the scheme first.
>>
>> That will be wrong.
> 
> It matters mostly when dealing with scp-like syntax, word:path.
> 
> I _think_ taking notice of "word://" (with doubled slashes) and
> treating it specially will not introduce any new issue; while it is
> still OK for users to have a local directory called "word:", if they
> meant a subdirectory of it, they wouldn't have typed double-slashes
> there.
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to [email-masked]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>