27
28
git push public master:master
31
34
> GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1
36
> Accept-Encoding: gzip
36
40
< Cache-Control: no-cache, max-age=0, must-revalidate
37
41
< Content-Type: application/x-git-upload-pack-advertisement
38
42
> POST /smart/repo.git/git-upload-pack HTTP/1.1
39
> Accept-Encoding: deflate, gzip
43
> Accept-Encoding: gzip
40
44
> Content-Type: application/x-git-upload-pack-request
41
45
> Accept: application/x-git-upload-pack-result
42
46
> Content-Length: xxx
109
113
git clone $HTTPD_URL/smart-redir-temp/repo.git --quiet repo-t
116
test_expect_success 'clone from password-protected repository' '
118
set_askpass user@host &&
119
git clone --bare "$HTTPD_URL/auth/smart/repo.git" smart-auth &&
120
expect_askpass both user@host &&
121
git --git-dir=smart-auth log -1 --format=%s >actual &&
122
test_cmp expect actual
125
test_expect_success 'clone from auth-only-for-push repository' '
128
git clone --bare "$HTTPD_URL/auth-push/smart/repo.git" smart-noauth &&
129
expect_askpass none &&
130
git --git-dir=smart-noauth log -1 --format=%s >actual &&
131
test_cmp expect actual
134
test_expect_success 'clone from auth-only-for-objects repository' '
136
set_askpass user@host &&
137
git clone --bare "$HTTPD_URL/auth-fetch/smart/repo.git" half-auth &&
138
expect_askpass both user@host &&
139
git --git-dir=half-auth log -1 --format=%s >actual &&
140
test_cmp expect actual
143
test_expect_success 'no-op half-auth fetch does not require a password' '
145
git --git-dir=half-auth fetch &&
149
test_expect_success 'disable dumb http on server' '
150
git --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/repo.git" \
151
config http.getanyfile false
154
test_expect_success 'GIT_SMART_HTTP can disable smart http' '
156
export GIT_SMART_HTTP &&
158
test_must_fail git fetch)
161
test_expect_success 'invalid Content-Type rejected' '
162
test_must_fail git clone $HTTPD_URL/broken_smart/repo.git 2>actual
163
grep "not valid:" actual
166
test_expect_success 'create namespaced refs' '
167
test_commit namespaced &&
168
git push public HEAD:refs/namespaces/ns/refs/heads/master &&
169
git --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/repo.git" \
170
symbolic-ref refs/namespaces/ns/HEAD refs/namespaces/ns/refs/heads/master
173
test_expect_success 'smart clone respects namespace' '
174
git clone "$HTTPD_URL/smart_namespace/repo.git" ns-smart &&
175
echo namespaced >expect &&
176
git --git-dir=ns-smart/.git log -1 --format=%s >actual &&
177
test_cmp expect actual
180
test_expect_success 'dumb clone via http-backend respects namespace' '
181
git --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/repo.git" \
182
config http.getanyfile true &&
183
GIT_SMART_HTTP=0 git clone \
184
"$HTTPD_URL/smart_namespace/repo.git" ns-dumb &&
185
echo namespaced >expect &&
186
git --git-dir=ns-dumb/.git log -1 --format=%s >actual &&
187
test_cmp expect actual
112
190
test -n "$GIT_TEST_LONG" && test_set_prereq EXPENSIVE
114
192
test_expect_success EXPENSIVE 'create 50,000 tags in the repo' '
116
194
cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
195
for i in `test_seq 50000`
119
197
echo "commit refs/heads/too-many-refs"