Jeff King <peff@xxxxxxxx> writes: > On Thu, Sep 20, 2012 at 02:15:20PM -0700, Junio C Hamano wrote: > >> Jeff King <peff@xxxxxxxx> writes: >> >> > I'm half-tempted to just drop the config entirely, leave >> > GIT_SMART_HTTP=false as an escape hatch, and see if anybody even cares. >> >> Sounds like a very attractive minimalistic way to go forward. We >> can always add per-remote configuration when we find it necessary, >> but once we add support, we cannot easily yank it out. > > Like this? Yeah. Will queue this one instead. The simpler, the better ;-) > > -- >8 -- > Subject: [PATCH] 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, commit 703e6e7 worked 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 of 703e6e7 assumes 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@xxxxxxxx> > --- > remote-curl.c | 3 ++- > t/t5551-http-fetch.sh | 12 ++++++++++++ > 2 files changed, 14 insertions(+), 1 deletion(-) > > diff --git a/remote-curl.c b/remote-curl.c > index c0b98cc..7b19ebb 100644 > --- a/remote-curl.c > +++ b/remote-curl.c > @@ -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, '?'); > diff --git a/t/t5551-http-fetch.sh b/t/t5551-http-fetch.sh > index 2db5c35..8427943 100755 > --- a/t/t5551-http-fetch.sh > +++ b/t/t5551-http-fetch.sh > @@ -129,6 +129,18 @@ test_expect_success 'clone from auth-only-for-push repository' ' > test_cmp expect actual > ' > > +test_expect_success 'disable dumb http on server' ' > + git --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/repo.git" \ > + config http.getanyfile false > +' > + > +test_expect_success 'GIT_SMART_HTTP can disable smart http' ' > + (GIT_SMART_HTTP=0 && > + export GIT_SMART_HTTP && > + cd clone && > + test_must_fail git fetch) > +' > + > test -n "$GIT_TEST_LONG" && test_set_prereq EXPENSIVE > > test_expect_success EXPENSIVE 'create 50,000 tags in the repo' ' -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html