remote-curl: let users turn off smart http
Usually there is no need for users to specify whether an http remote is smart or dumb; the protocol is designed so that a single initial request is made, and the client can determine the server's capability from the response. However, some misconfigured dumb-only servers may not like the initial request by a smart client, as it contains a query string. Until recently, commit703e6e7worked around this by making a second request. However, that commit was recently reverted due to its side effect of masking the initial request's error code. Since git has had that workaround for several years, we don't know exactly how many such misconfigured servers are out there. The reversion of703e6e7assumes they are rare enough not to worry about. Still, that reversion leaves somebody who does run into such a server with no escape hatch at all. Let's give them an environment variable they can tweak to perform the "dumb" request. This is intentionally not a documented interface. It's overly simple and is really there for debugging in case somebody does complain about git not working with their server. A real user-facing interface would entail a per-remote or per-URL config variable. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
243c329c1e
commit
02572c2e3a
@ -102,7 +102,8 @@ static struct discovery* discover_refs(const char *service)
|
||||
free_discovery(last);
|
||||
|
||||
strbuf_addf(&buffer, "%sinfo/refs", url);
|
||||
if (!prefixcmp(url, "http://") || !prefixcmp(url, "https://")) {
|
||||
if ((!prefixcmp(url, "http://") || !prefixcmp(url, "https://")) &&
|
||||
git_env_bool("GIT_SMART_HTTP", 1)) {
|
||||
maybe_smart = 1;
|
||||
if (!strchr(url, '?'))
|
||||
strbuf_addch(&buffer, '?');
|
||||
|
||||
Reference in New Issue
Block a user