X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=connect.c;h=ae49c5a367f9f5b77b07228fcd241fd73a5711b0;hb=5433235daec11550973f1e290f069ce0c27f53ab;hp=a5afd2a5361d840347eb64a3a73db9d8dcbd1057;hpb=e1341abc3759950e891822088cb0163b71b316b3;p=git.git diff --git a/connect.c b/connect.c index a5afd2a53..ae49c5a36 100644 --- a/connect.c +++ b/connect.c @@ -72,7 +72,7 @@ struct ref **get_remote_heads(int in, struct ref **list, continue; if (nr_match && !path_match(name, nr_match, match)) continue; - ref = xcalloc(1, sizeof(*ref) + len - 40); + ref = alloc_ref(len - 40); hashcpy(ref->old_sha1, old_sha1); memcpy(ref->name, buffer + 41, len - 40); *list = ref; @@ -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"); @@ -587,6 +589,7 @@ pid_t git_connect(int fd[2], char *url, const char *prog, int flags) unsetenv(ALTERNATE_DB_ENVIRONMENT); unsetenv(DB_ENVIRONMENT); unsetenv(GIT_DIR_ENVIRONMENT); + unsetenv(GIT_WORK_TREE_ENVIRONMENT); unsetenv(GRAFT_ENVIRONMENT); unsetenv(INDEX_ENVIRONMENT); execlp("sh", "sh", "-c", command, NULL);