connect: accept file:// URL scheme
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 1 Aug 2007 17:03:37 +0000 (10:03 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 2 Aug 2007 04:51:20 +0000 (21:51 -0700)
We might make it something like: "if you use an url, we don't default to
local", so the difference would be that

git clone file:///directory/to/repo

would work the way it does now, but

git clone /directory/to/repo

would default to "-l" behaviour. That kind of would make sense (and should
be easy to implement.

This adds support for "file://" URL to underlying connect
codepath to make it happen.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
connect.c

index 715cdc022340f8792c4bad45ba6a84c27bbfaa7f..ae49c5a367f9f5b77b07228fcd241fd73a5711b0 100644 (file)
--- a/connect.c
+++ b/connect.c
@@ -145,6 +145,8 @@ static enum protocol get_protocol(const char *name)
                return PROTO_SSH;
        if (!strcmp(name, "ssh+git"))
                return PROTO_SSH;
+       if (!strcmp(name, "file"))
+               return PROTO_LOCAL;
        die("I don't handle protocol '%s'", name);
 }
 
@@ -498,13 +500,13 @@ pid_t git_connect(int fd[2], char *url, const char *prog, int flags)
                end = host;
 
        path = strchr(end, c);
-       if (c == ':') {
-               if (path) {
+       if (path) {
+               if (c == ':') {
                        protocol = PROTO_SSH;
                        *path++ = '\0';
-               } else
-                       path = host;
-       }
+               }
+       } else
+               path = end;
 
        if (!path || !*path)
                die("No path specified. See 'man git-pull' for valid url syntax");