Merge branch 'tc/smart-http-post-redirect'

* tc/smart-http-post-redirect:
  smart-http: Don't change POST to GET when following redirect
This commit is contained in:
Junio C Hamano 2010-11-29 17:52:30 -08:00
commit feedaf43db
3 changed files with 20 additions and 0 deletions

5
http.c
View File

@ -279,6 +279,11 @@ static CURL *get_curl_handle(void)
} }
curl_easy_setopt(result, CURLOPT_FOLLOWLOCATION, 1); curl_easy_setopt(result, CURLOPT_FOLLOWLOCATION, 1);
#if LIBCURL_VERSION_NUM >= 0x071301
curl_easy_setopt(result, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
#elif LIBCURL_VERSION_NUM >= 0x071101
curl_easy_setopt(result, CURLOPT_POST301, 1);
#endif
if (getenv("GIT_CURL_VERBOSE")) if (getenv("GIT_CURL_VERBOSE"))
curl_easy_setopt(result, CURLOPT_VERBOSE, 1); curl_easy_setopt(result, CURLOPT_VERBOSE, 1);

View File

@ -17,6 +17,9 @@ ErrorLog error.log
<IfModule !mod_env.c> <IfModule !mod_env.c>
LoadModule env_module modules/mod_env.so LoadModule env_module modules/mod_env.so
</IfModule> </IfModule>
<IfModule !mod_rewrite.c>
LoadModule rewrite_module modules/mod_rewrite.so
</IFModule>
Alias /dumb/ www/ Alias /dumb/ www/
@ -36,6 +39,10 @@ ScriptAlias /smart_noexport/ ${GIT_EXEC_PATH}/git-http-backend/
Options ExecCGI Options ExecCGI
</Files> </Files>
RewriteEngine on
RewriteRule ^/smart-redir-perm/(.*)$ /smart/$1 [R=301]
RewriteRule ^/smart-redir-temp/(.*)$ /smart/$1 [R=302]
<IfDefine SSL> <IfDefine SSL>
LoadModule ssl_module modules/mod_ssl.so LoadModule ssl_module modules/mod_ssl.so

View File

@ -101,5 +101,13 @@ test_expect_success 'used upload-pack service' '
test_cmp exp act test_cmp exp act
' '
test_expect_success 'follow redirects (301)' '
git clone $HTTPD_URL/smart-redir-perm/repo.git --quiet repo-p
'
test_expect_success 'follow redirects (302)' '
git clone $HTTPD_URL/smart-redir-temp/repo.git --quiet repo-t
'
stop_httpd stop_httpd
test_done test_done