Re: [BUG] Filenames with single colon being treated as remote repository
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Apr 21, 2013, 06:05 UTC
- Message-ID
- <20130421060538.GB10429@elie.Belkin>
- In-Reply-To
- <20130421045329.GB30538@WST420>
Hi,
William Giokas wrote:
Show 7 quoted lines
> $ 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://")