diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-09-29 22:28:24 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-09-29 22:28:25 -0700 |
commit | fb1e4a85bf7eb2df819a888d7db3ecececa1b7fc (patch) | |
tree | 0d684a95ff8879c5fbfcf93475c46c7a7255279d | |
parent | c318040a3633475b591d9b9ece5877df415cf1d8 (diff) | |
parent | 02572c2e3afcc200936260f48863447726212a7c (diff) | |
download | git-fb1e4a85bf7eb2df819a888d7db3ecececa1b7fc.tar.gz |
Merge branch 'jk/smart-http-switch'
Allows users to turn off smart-http when talking to dumb-only
servers.
* jk/smart-http-switch:
remote-curl: let users turn off smart http
remote-curl: rename is_http variable
-rw-r--r-- | remote-curl.c | 9 | ||||
-rwxr-xr-x | t/t5551-http-fetch.sh | 12 |
2 files changed, 17 insertions, 4 deletions
diff --git a/remote-curl.c b/remote-curl.c index a2696082fb..10fa8f1ac5 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -95,15 +95,16 @@ static struct discovery* discover_refs(const char *service) struct strbuf buffer = STRBUF_INIT; struct discovery *last = last_discovery; char *refs_url; - int http_ret, is_http = 0; + int http_ret, maybe_smart = 0; if (last && !strcmp(service, last->service)) return last; free_discovery(last); strbuf_addf(&buffer, "%sinfo/refs", url); - if (!prefixcmp(url, "http://") || !prefixcmp(url, "https://")) { - is_http = 1; + if ((!prefixcmp(url, "http://") || !prefixcmp(url, "https://")) && + git_env_bool("GIT_SMART_HTTP", 1)) { + maybe_smart = 1; if (!strchr(url, '?')) strbuf_addch(&buffer, '?'); else @@ -131,7 +132,7 @@ static struct discovery* discover_refs(const char *service) last->buf_alloc = strbuf_detach(&buffer, &last->len); last->buf = last->buf_alloc; - if (is_http && 5 <= last->len && last->buf[4] == '#') { + if (maybe_smart && 5 <= last->len && last->buf[4] == '#') { /* smart HTTP response; validate that the service * pkt-line matches our request. */ diff --git a/t/t5551-http-fetch.sh b/t/t5551-http-fetch.sh index 380c17541e..5060879d6d 100755 --- a/t/t5551-http-fetch.sh +++ b/t/t5551-http-fetch.sh @@ -130,6 +130,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' ' |