Re: Error when cloning with weird local directory
Torsten Bögershausen tbo...@web.de writes: So I think that git clone can be slighty more consistant here. Sure. 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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Error when cloning with weird local directory
On 2015-08-06 09.50, Junio C Hamano wrote: Junio C Hamano gits...@pobox.com writes: Torsten Bögershausen tbo...@web.de 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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Error when cloning with weird local directory
Junio C Hamano gits...@pobox.com writes: Torsten Bögershausen tbo...@web.de 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. 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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Error when cloning with weird local directory
Torsten Bögershausen tbo...@web.de 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. There should be a check for the scheme first. That will be wrong. -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Error when cloning with weird local directory
On 2015-08-06 06.21, Chris Packham wrote: Hi All, A developer at $dayjob called me over to have a look at a git error he was getting (names changed to protect the innocent). $ git --version git version 2.5.0 $ git clone ssh://example.com/repo.git Cloning into 'repo'... fatal: I don't handle protocol '/home/user/src/ssh' After a bit of head scratching we found that he had a local directory structure called 'ssh://example.com/repo.git' it wasn't a complete repo but it had some of the things one expects to find in a .git directory (info, objects, refs, etc). It had been there for a while and we suspect was created by a scp gone wrong from the last time he was dealing with repo.git. I'm wondering if it's worth catching this kind of weirdness and erroring out with a slightly more useful message. I'm also wondering what would have happened if this repo was actually a full and complete thing. I'm not sure that there is a problem worth solving here. I can provide an anonymized tarball of the directory structure in question if anyone is interested. But maybe this is useful for future mailing list searchers[1]. Thanks, Chris This is indeed a bug: 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. There should be a check for the scheme first. It is not the error message that is confusing, we should never get there, but invoke ssh instead. The bug is in clone.c -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html