Jeff King wrote:
I don't think that is enough. Something like /path/to/foo:bar would
trigger !is_url already, but then git_connect fails.
Doh. Here's another try, still untested.
diff --git i/connect.c w/connect.c
index 49e56ba3..fe13942f 100644
--- i/connect.c
+++ w/connect.c
@@ -504,6 +504,7 @@ struct child_process *git_connect(int fd[2], const char *url_orig,
int c;
struct child_process *conn = &no_fork;
enum protocol protocol = PROTO_LOCAL;
+ struct stat st;
int free_path = 0;
char *port = NULL;
const char **arg;
@@ -548,7 +549,8 @@ struct child_process *git_connect(int fd[2], const char *url_orig,
end = host;
path = strchr(end, c);
- if (path && !has_dos_drive_prefix(end)) {
+ if (path && !has_dos_drive_prefix(end) &&
+ (c != ':' || stat(path, &st))) {
if (c == ':') {
protocol = PROTO_SSH;
*path++ = '\0';