receive-pack: support pushing to a shallow clone via http
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
16094885ca
commit
c29a7b8b3f
@ -1179,9 +1179,6 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix)
|
||||
if (!enter_repo(dir, 0))
|
||||
die("'%s' does not appear to be a git repository", dir);
|
||||
|
||||
if (is_repository_shallow() && stateless_rpc)
|
||||
die("attempt to push into a shallow repository");
|
||||
|
||||
git_config(receive_pack_config, NULL);
|
||||
|
||||
if (0 <= transfer_unpack_limit)
|
||||
|
@ -16,6 +16,7 @@ test_expect_success 'setup' '
|
||||
commit 2 &&
|
||||
commit 3 &&
|
||||
commit 4 &&
|
||||
git clone . full &&
|
||||
(
|
||||
git init full-abc &&
|
||||
cd full-abc &&
|
||||
@ -120,4 +121,38 @@ EOF
|
||||
)
|
||||
'
|
||||
|
||||
if test -n "$NO_CURL" -o -z "$GIT_TEST_HTTPD"; then
|
||||
say 'skipping remaining tests, git built without http support'
|
||||
test_done
|
||||
fi
|
||||
|
||||
LIB_HTTPD_PORT=${LIB_HTTPD_PORT-'5537'}
|
||||
. "$TEST_DIRECTORY"/lib-httpd.sh
|
||||
start_httpd
|
||||
|
||||
test_expect_success 'push to shallow repo via http' '
|
||||
git clone --bare --no-local shallow "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
|
||||
(
|
||||
cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
|
||||
git config http.receivepack true
|
||||
) &&
|
||||
(
|
||||
cd full &&
|
||||
commit 9 &&
|
||||
git push $HTTPD_URL/smart/repo.git +master:refs/remotes/top/master
|
||||
) &&
|
||||
(
|
||||
cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
|
||||
git fsck &&
|
||||
git log --format=%s top/master >actual &&
|
||||
cat <<EOF >expect &&
|
||||
9
|
||||
4
|
||||
3
|
||||
EOF
|
||||
test_cmp expect actual
|
||||
)
|
||||
'
|
||||
|
||||
stop_httpd
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user