summaryrefslogtreecommitdiff
path: root/connect.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2007-08-01 17:03:37 (GMT)
committerJunio C Hamano <gitster@pobox.com>2007-08-02 04:51:20 (GMT)
commit72a4f4b657846af6c65360d92aa09d8b7f3dfbb0 (patch)
tree7331b40f39d8b234f7b9162fd5a1d9edd40ee488 /connect.c
parent50cff52f1a896118d5260c752900188e7d231cf6 (diff)
downloadgit-72a4f4b657846af6c65360d92aa09d8b7f3dfbb0.zip
git-72a4f4b657846af6c65360d92aa09d8b7f3dfbb0.tar.gz
git-72a4f4b657846af6c65360d92aa09d8b7f3dfbb0.tar.bz2
connect: accept file:// URL scheme
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>
Diffstat (limited to 'connect.c')
-rw-r--r--connect.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/connect.c b/connect.c
index 715cdc0..ae49c5a 100644
--- 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");