Merge branch 'jk/fetch-reachability-error-fix'
Code clean-up and a fix for "git fetch" by an explicit object name (as opposed to fetching refs by name). * jk/fetch-reachability-error-fix: fetch: do not consider peeled tags as advertised tips remote.c: make singular free_ref() public fetch: use free_refs() pkt-line: prepare buffer before handling ERR packets upload-pack: send ERR packet for non-tip objects t5530: check protocol response for "not our ref" t5516: drop ok=sigpipe from unreachable-want tests
This commit is contained in:
@ -1241,9 +1241,9 @@ do
|
||||
cd shallow &&
|
||||
# Some protocol versions (e.g. 2) support fetching
|
||||
# unadvertised objects, so restrict this test to v0.
|
||||
test_must_fail ok=sigpipe env GIT_TEST_PROTOCOL_VERSION= \
|
||||
test_must_fail env GIT_TEST_PROTOCOL_VERSION= \
|
||||
git fetch ../testrepo/.git $SHA1_3 &&
|
||||
test_must_fail ok=sigpipe env GIT_TEST_PROTOCOL_VERSION= \
|
||||
test_must_fail env GIT_TEST_PROTOCOL_VERSION= \
|
||||
git fetch ../testrepo/.git $SHA1_1 &&
|
||||
git --git-dir=../testrepo/.git config uploadpack.allowreachablesha1inwant true &&
|
||||
git fetch ../testrepo/.git $SHA1_1 &&
|
||||
@ -1251,8 +1251,9 @@ do
|
||||
test_must_fail git cat-file commit $SHA1_2 &&
|
||||
git fetch ../testrepo/.git $SHA1_2 &&
|
||||
git cat-file commit $SHA1_2 &&
|
||||
test_must_fail ok=sigpipe env GIT_TEST_PROTOCOL_VERSION= \
|
||||
git fetch ../testrepo/.git $SHA1_3
|
||||
test_must_fail env GIT_TEST_PROTOCOL_VERSION= \
|
||||
git fetch ../testrepo/.git $SHA1_3 2>err &&
|
||||
test_i18ngrep "remote error:.*not our ref.*$SHA1_3\$" err
|
||||
)
|
||||
'
|
||||
done
|
||||
@ -1284,6 +1285,17 @@ test_expect_success 'fetch follows tags by default' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'peeled advertisements are not considered ref tips' '
|
||||
mk_empty testrepo &&
|
||||
git -C testrepo commit --allow-empty -m one &&
|
||||
git -C testrepo commit --allow-empty -m two &&
|
||||
git -C testrepo tag -m foo mytag HEAD^ &&
|
||||
oid=$(git -C testrepo rev-parse mytag^{commit}) &&
|
||||
test_must_fail env GIT_TEST_PROTOCOL_VERSION= \
|
||||
git fetch testrepo $oid 2>err &&
|
||||
test_i18ngrep "Server does not allow request for unadvertised object" err
|
||||
'
|
||||
|
||||
test_expect_success 'pushing a specific ref applies remote.$name.push as refmap' '
|
||||
mk_test testrepo heads/master &&
|
||||
rm -fr src dst &&
|
||||
|
@ -57,13 +57,25 @@ test_expect_success 'upload-pack fails due to error in rev-list' '
|
||||
grep "bad tree object" output.err
|
||||
'
|
||||
|
||||
test_expect_success 'upload-pack error message when bad ref requested' '
|
||||
test_expect_success 'upload-pack fails due to bad want (no object)' '
|
||||
|
||||
printf "0045want %s multi_ack_detailed\n00000009done\n0000" \
|
||||
"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef" >input &&
|
||||
test_must_fail git upload-pack . <input >output 2>output.err &&
|
||||
grep -q "not our ref" output.err &&
|
||||
! grep -q multi_ack_detailed output.err
|
||||
grep "not our ref" output.err &&
|
||||
grep "ERR" output &&
|
||||
! grep multi_ack_detailed output.err
|
||||
'
|
||||
|
||||
test_expect_success 'upload-pack fails due to bad want (not tip)' '
|
||||
|
||||
oid=$(echo an object we have | git hash-object -w --stdin) &&
|
||||
printf "0045want %s multi_ack_detailed\n00000009done\n0000" \
|
||||
"$oid" >input &&
|
||||
test_must_fail git upload-pack . <input >output 2>output.err &&
|
||||
grep "not our ref" output.err &&
|
||||
grep "ERR" output &&
|
||||
! grep multi_ack_detailed output.err
|
||||
'
|
||||
|
||||
test_expect_success 'upload-pack fails due to error in pack-objects enumeration' '
|
||||
|
Reference in New Issue
Block a user