From: Jonathan Nieder Date: Sun, 21 Apr 2013 06:05:39 GMT Subject: Re: [BUG] Filenames with single colon being treated as remote repository Message-ID: <20130421060538.GB10429@elie.Belkin> In-Reply-To: <20130421045329.GB30538@WST420> Hi, William Giokas wrote: > $ git clone /tmp/foo:bar/baz /tmp/new-baz > > but running this gives me this output:: > > Cloning into 'new-baz'... > ssh: Could not resolve hostname /tmp/foo: Success > fatal: Could not read from remote repository. Here's a toy patch. I haven't thought carefully about whether it's a good idea, but maybe it can be useful for thinking about that. Still needs documentation and tests. My main worry is that the proposed rule for when an argument is treated as a local path is hard to explain. There's some precedent in handling of bundles, though. What do you think? Thanks, Jonathan diff --git i/transport.c w/transport.c index e6f9346c..61eba842 100644 --- i/transport.c +++ w/transport.c @@ -903,6 +903,7 @@ struct transport *transport_get(struct remote *remote, const char *url) { const char *helper; struct transport *ret = xcalloc(1, sizeof(*ret)); + struct stat st; ret->progress = isatty(2); @@ -942,6 +943,7 @@ struct transport *transport_get(struct remote *remote, const char *url) ret->disconnect = close_bundle; ret->smart_options = NULL; } else if (!is_url(url) + || (is_local(url) && !stat(url, &st)) || !prefixcmp(url, "file://") || !prefixcmp(url, "git://") || !prefixcmp(url, "ssh://")