mirror of
https://github.com/git/git.git
synced 2024-10-19 00:08:16 +02:00
Merge branch 'ts/unpacklimit-config-fix'
transfer.unpackLimit ought to be used as a fallback, but overrode fetch.unpackLimit and receive.unpackLimit instead. * ts/unpacklimit-config-fix: transfer.unpackLimit: fetch/receive.unpackLimit takes precedence
This commit is contained in:
commit
cc48906c3b
@ -2527,10 +2527,10 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix)
|
|||||||
if (cert_nonce_seed)
|
if (cert_nonce_seed)
|
||||||
push_cert_nonce = prepare_push_cert_nonce(service_dir, time(NULL));
|
push_cert_nonce = prepare_push_cert_nonce(service_dir, time(NULL));
|
||||||
|
|
||||||
if (0 <= transfer_unpack_limit)
|
if (0 <= receive_unpack_limit)
|
||||||
unpack_limit = transfer_unpack_limit;
|
|
||||||
else if (0 <= receive_unpack_limit)
|
|
||||||
unpack_limit = receive_unpack_limit;
|
unpack_limit = receive_unpack_limit;
|
||||||
|
else if (0 <= transfer_unpack_limit)
|
||||||
|
unpack_limit = transfer_unpack_limit;
|
||||||
|
|
||||||
switch (determine_protocol_version_server()) {
|
switch (determine_protocol_version_server()) {
|
||||||
case protocol_v2:
|
case protocol_v2:
|
||||||
|
@ -1911,10 +1911,10 @@ static void fetch_pack_setup(void)
|
|||||||
if (did_setup)
|
if (did_setup)
|
||||||
return;
|
return;
|
||||||
fetch_pack_config();
|
fetch_pack_config();
|
||||||
if (0 <= transfer_unpack_limit)
|
if (0 <= fetch_unpack_limit)
|
||||||
unpack_limit = transfer_unpack_limit;
|
|
||||||
else if (0 <= fetch_unpack_limit)
|
|
||||||
unpack_limit = fetch_unpack_limit;
|
unpack_limit = fetch_unpack_limit;
|
||||||
|
else if (0 <= transfer_unpack_limit)
|
||||||
|
unpack_limit = transfer_unpack_limit;
|
||||||
did_setup = 1;
|
did_setup = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1127,6 +1127,52 @@ do
|
|||||||
'
|
'
|
||||||
done
|
done
|
||||||
|
|
||||||
|
test_expect_success 'prepare source branch' '
|
||||||
|
echo one >onebranch &&
|
||||||
|
git checkout --orphan onebranch &&
|
||||||
|
git rm --cached -r . &&
|
||||||
|
git add onebranch &&
|
||||||
|
git commit -m onebranch &&
|
||||||
|
git rev-list --objects onebranch -- >actual &&
|
||||||
|
# 3 objects should be created, at least ...
|
||||||
|
test 3 -le $(wc -l <actual)
|
||||||
|
'
|
||||||
|
|
||||||
|
validate_store_type () {
|
||||||
|
git -C dest count-objects -v >actual &&
|
||||||
|
case "$store_type" in
|
||||||
|
packed)
|
||||||
|
grep "^count: 0$" actual ;;
|
||||||
|
loose)
|
||||||
|
grep "^packs: 0$" actual ;;
|
||||||
|
esac || {
|
||||||
|
echo "store_type is $store_type"
|
||||||
|
cat actual
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
test_unpack_limit () {
|
||||||
|
store_type=$1
|
||||||
|
|
||||||
|
case "$store_type" in
|
||||||
|
packed) fetch_limit=1 transfer_limit=10000 ;;
|
||||||
|
loose) fetch_limit=10000 transfer_limit=1 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
test_expect_success "fetch trumps transfer limit" '
|
||||||
|
rm -fr dest &&
|
||||||
|
git --bare init dest &&
|
||||||
|
git -C dest config fetch.unpacklimit $fetch_limit &&
|
||||||
|
git -C dest config transfer.unpacklimit $transfer_limit &&
|
||||||
|
git -C dest fetch .. onebranch &&
|
||||||
|
validate_store_type
|
||||||
|
'
|
||||||
|
}
|
||||||
|
|
||||||
|
test_unpack_limit packed
|
||||||
|
test_unpack_limit loose
|
||||||
|
|
||||||
setup_negotiation_tip () {
|
setup_negotiation_tip () {
|
||||||
SERVER="$1"
|
SERVER="$1"
|
||||||
URL="$2"
|
URL="$2"
|
||||||
|
@ -9,10 +9,26 @@ TEST_PASSES_SANITIZE_LEAK=true
|
|||||||
# When the limit is 1, `git receive-pack` will call `git index-pack`.
|
# When the limit is 1, `git receive-pack` will call `git index-pack`.
|
||||||
# When the limit is 10000, `git receive-pack` will call `git unpack-objects`.
|
# When the limit is 10000, `git receive-pack` will call `git unpack-objects`.
|
||||||
|
|
||||||
|
validate_store_type () {
|
||||||
|
git -C dest count-objects -v >actual &&
|
||||||
|
case "$store_type" in
|
||||||
|
index)
|
||||||
|
grep "^count: 0$" actual ;;
|
||||||
|
unpack)
|
||||||
|
grep "^packs: 0$" actual ;;
|
||||||
|
esac || {
|
||||||
|
echo "store_type is $store_type"
|
||||||
|
cat actual
|
||||||
|
false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
test_pack_input_limit () {
|
test_pack_input_limit () {
|
||||||
case "$1" in
|
store_type=$1
|
||||||
index) unpack_limit=1 ;;
|
|
||||||
unpack) unpack_limit=10000 ;;
|
case "$store_type" in
|
||||||
|
index) unpack_limit=1 other_limit=10000 ;;
|
||||||
|
unpack) unpack_limit=10000 other_limit=1 ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
test_expect_success 'prepare destination repository' '
|
test_expect_success 'prepare destination repository' '
|
||||||
@ -43,6 +59,19 @@ test_pack_input_limit () {
|
|||||||
git --git-dir=dest config receive.maxInputSize 0 &&
|
git --git-dir=dest config receive.maxInputSize 0 &&
|
||||||
git push dest HEAD
|
git push dest HEAD
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'prepare destination repository (once more)' '
|
||||||
|
rm -fr dest &&
|
||||||
|
git --bare init dest
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'receive trumps transfer' '
|
||||||
|
git --git-dir=dest config receive.unpacklimit "$unpack_limit" &&
|
||||||
|
git --git-dir=dest config transfer.unpacklimit "$other_limit" &&
|
||||||
|
git push dest HEAD &&
|
||||||
|
validate_store_type
|
||||||
|
'
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
test_expect_success "create known-size (1024 bytes) commit" '
|
test_expect_success "create known-size (1024 bytes) commit" '
|
||||||
|
Loading…
Reference in New Issue
Block a user