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 precedencemaint
commit
cc48906c3b
|
@ -2527,10 +2527,10 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix)
|
|||
if (cert_nonce_seed)
|
||||
push_cert_nonce = prepare_push_cert_nonce(service_dir, time(NULL));
|
||||
|
||||
if (0 <= transfer_unpack_limit)
|
||||
unpack_limit = transfer_unpack_limit;
|
||||
else if (0 <= receive_unpack_limit)
|
||||
if (0 <= receive_unpack_limit)
|
||||
unpack_limit = receive_unpack_limit;
|
||||
else if (0 <= transfer_unpack_limit)
|
||||
unpack_limit = transfer_unpack_limit;
|
||||
|
||||
switch (determine_protocol_version_server()) {
|
||||
case protocol_v2:
|
||||
|
|
|
@ -1911,10 +1911,10 @@ static void fetch_pack_setup(void)
|
|||
if (did_setup)
|
||||
return;
|
||||
fetch_pack_config();
|
||||
if (0 <= transfer_unpack_limit)
|
||||
unpack_limit = transfer_unpack_limit;
|
||||
else if (0 <= fetch_unpack_limit)
|
||||
if (0 <= fetch_unpack_limit)
|
||||
unpack_limit = fetch_unpack_limit;
|
||||
else if (0 <= transfer_unpack_limit)
|
||||
unpack_limit = transfer_unpack_limit;
|
||||
did_setup = 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -1127,6 +1127,52 @@ do
|
|||
'
|
||||
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 () {
|
||||
SERVER="$1"
|
||||
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 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 () {
|
||||
case "$1" in
|
||||
index) unpack_limit=1 ;;
|
||||
unpack) unpack_limit=10000 ;;
|
||||
store_type=$1
|
||||
|
||||
case "$store_type" in
|
||||
index) unpack_limit=1 other_limit=10000 ;;
|
||||
unpack) unpack_limit=10000 other_limit=1 ;;
|
||||
esac
|
||||
|
||||
test_expect_success 'prepare destination repository' '
|
||||
|
@ -43,6 +59,19 @@ test_pack_input_limit () {
|
|||
git --git-dir=dest config receive.maxInputSize 0 &&
|
||||
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" '
|
||||
|
|
Loading…
Reference in New Issue