mirror of
https://github.com/git/git.git
synced 2026-04-12 01:40:10 +02:00
Merge branch 'jk/pkt-line-cleanup'
Clean up pkt-line API, implementation and its callers to make them more robust. * jk/pkt-line-cleanup: do not use GIT_TRACE_PACKET=3 in tests remote-curl: always parse incoming refs remote-curl: move ref-parsing code up in file remote-curl: pass buffer straight to get_remote_heads teach get_remote_heads to read from a memory buffer pkt-line: share buffer/descriptor reading implementation pkt-line: provide a LARGE_PACKET_MAX static buffer pkt-line: move LARGE_PACKET_MAX definition from sideband pkt-line: teach packet_read_line to chomp newlines pkt-line: provide a generic reading function with options pkt-line: drop safe_write function pkt-line: move a misplaced comment write_or_die: raise SIGPIPE when we get EPIPE upload-archive: use argv_array to store client arguments upload-archive: do not copy repo name send-pack: prefer prefixcmp over memcmp in receive_status fetch-pack: fix out-of-bounds buffer offset in get_ack upload-pack: remove packet debugging harness upload-pack: do not add duplicate objects to shallow list upload-pack: use get_sha1_hex to parse "shallow" lines
This commit is contained in:
@@ -4,10 +4,6 @@ test_description='test automatic tag following'
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
if ! test_have_prereq NOT_MINGW; then
|
||||
say "GIT_DEBUG_SEND_PACK not supported - skipping tests"
|
||||
fi
|
||||
|
||||
# End state of the repository:
|
||||
#
|
||||
# T - tag1 S - tag2
|
||||
@@ -17,7 +13,7 @@ fi
|
||||
# \ C - origin/cat \
|
||||
# origin/master master
|
||||
|
||||
test_expect_success NOT_MINGW setup '
|
||||
test_expect_success setup '
|
||||
test_tick &&
|
||||
echo ichi >file &&
|
||||
git add file &&
|
||||
@@ -39,28 +35,35 @@ test_expect_success NOT_MINGW setup '
|
||||
'
|
||||
|
||||
U=UPLOAD_LOG
|
||||
UPATH="$(pwd)/$U"
|
||||
|
||||
test_expect_success NOT_MINGW 'setup expect' '
|
||||
test_expect_success 'setup expect' '
|
||||
cat - <<EOF >expect
|
||||
#S
|
||||
want $A
|
||||
#E
|
||||
EOF
|
||||
'
|
||||
|
||||
test_expect_success NOT_MINGW 'fetch A (new commit : 1 connection)' '
|
||||
get_needs () {
|
||||
test -s "$1" &&
|
||||
perl -alne '
|
||||
next unless $F[1] eq "upload-pack<";
|
||||
last if $F[2] eq "0000";
|
||||
print $F[2], " ", $F[3];
|
||||
' "$1"
|
||||
}
|
||||
|
||||
test_expect_success 'fetch A (new commit : 1 connection)' '
|
||||
rm -f $U &&
|
||||
(
|
||||
cd cloned &&
|
||||
GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
|
||||
GIT_TRACE_PACKET=$UPATH git fetch &&
|
||||
test $A = $(git rev-parse --verify origin/master)
|
||||
) &&
|
||||
test -s $U &&
|
||||
cut -d" " -f1,2 $U >actual &&
|
||||
get_needs $U >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success NOT_MINGW "create tag T on A, create C on branch cat" '
|
||||
test_expect_success "create tag T on A, create C on branch cat" '
|
||||
git tag -a -m tag1 tag1 $A &&
|
||||
T=$(git rev-parse --verify tag1) &&
|
||||
|
||||
@@ -72,30 +75,27 @@ test_expect_success NOT_MINGW "create tag T on A, create C on branch cat" '
|
||||
git checkout master
|
||||
'
|
||||
|
||||
test_expect_success NOT_MINGW 'setup expect' '
|
||||
test_expect_success 'setup expect' '
|
||||
cat - <<EOF >expect
|
||||
#S
|
||||
want $C
|
||||
want $T
|
||||
#E
|
||||
EOF
|
||||
'
|
||||
|
||||
test_expect_success NOT_MINGW 'fetch C, T (new branch, tag : 1 connection)' '
|
||||
test_expect_success 'fetch C, T (new branch, tag : 1 connection)' '
|
||||
rm -f $U &&
|
||||
(
|
||||
cd cloned &&
|
||||
GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
|
||||
GIT_TRACE_PACKET=$UPATH git fetch &&
|
||||
test $C = $(git rev-parse --verify origin/cat) &&
|
||||
test $T = $(git rev-parse --verify tag1) &&
|
||||
test $A = $(git rev-parse --verify tag1^0)
|
||||
) &&
|
||||
test -s $U &&
|
||||
cut -d" " -f1,2 $U >actual &&
|
||||
get_needs $U >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success NOT_MINGW "create commits O, B, tag S on B" '
|
||||
test_expect_success "create commits O, B, tag S on B" '
|
||||
test_tick &&
|
||||
echo O >file &&
|
||||
git add file &&
|
||||
@@ -111,39 +111,34 @@ test_expect_success NOT_MINGW "create commits O, B, tag S on B" '
|
||||
S=$(git rev-parse --verify tag2)
|
||||
'
|
||||
|
||||
test_expect_success NOT_MINGW 'setup expect' '
|
||||
test_expect_success 'setup expect' '
|
||||
cat - <<EOF >expect
|
||||
#S
|
||||
want $B
|
||||
want $S
|
||||
#E
|
||||
EOF
|
||||
'
|
||||
|
||||
test_expect_success NOT_MINGW 'fetch B, S (commit and tag : 1 connection)' '
|
||||
test_expect_success 'fetch B, S (commit and tag : 1 connection)' '
|
||||
rm -f $U &&
|
||||
(
|
||||
cd cloned &&
|
||||
GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
|
||||
GIT_TRACE_PACKET=$UPATH git fetch &&
|
||||
test $B = $(git rev-parse --verify origin/master) &&
|
||||
test $B = $(git rev-parse --verify tag2^0) &&
|
||||
test $S = $(git rev-parse --verify tag2)
|
||||
) &&
|
||||
test -s $U &&
|
||||
cut -d" " -f1,2 $U >actual &&
|
||||
get_needs $U >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success NOT_MINGW 'setup expect' '
|
||||
test_expect_success 'setup expect' '
|
||||
cat - <<EOF >expect
|
||||
#S
|
||||
want $B
|
||||
want $S
|
||||
#E
|
||||
EOF
|
||||
'
|
||||
|
||||
test_expect_success NOT_MINGW 'new clone fetch master and tags' '
|
||||
test_expect_success 'new clone fetch master and tags' '
|
||||
git branch -D cat
|
||||
rm -f $U
|
||||
(
|
||||
@@ -151,15 +146,14 @@ test_expect_success NOT_MINGW 'new clone fetch master and tags' '
|
||||
cd clone2 &&
|
||||
git init &&
|
||||
git remote add origin .. &&
|
||||
GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
|
||||
GIT_TRACE_PACKET=$UPATH git fetch &&
|
||||
test $B = $(git rev-parse --verify origin/master) &&
|
||||
test $S = $(git rev-parse --verify tag2) &&
|
||||
test $B = $(git rev-parse --verify tag2^0) &&
|
||||
test $T = $(git rev-parse --verify tag1) &&
|
||||
test $A = $(git rev-parse --verify tag1^0)
|
||||
) &&
|
||||
test -s $U &&
|
||||
cut -d" " -f1,2 $U >actual &&
|
||||
get_needs $U >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
|
||||
@@ -54,11 +54,14 @@ cd "$base_dir"
|
||||
|
||||
rm -f "$U.D"
|
||||
|
||||
test_expect_success 'cloning with reference (no -l -s)' \
|
||||
'GIT_DEBUG_SEND_PACK=3 git clone --reference B "file://$(pwd)/A" D 3>"$U.D"'
|
||||
test_expect_success 'cloning with reference (no -l -s)' '
|
||||
GIT_TRACE_PACKET=$U.D git clone --reference B "file://$(pwd)/A" D
|
||||
'
|
||||
|
||||
test_expect_success 'fetched no objects' \
|
||||
'! grep "^want" "$U.D"'
|
||||
test_expect_success 'fetched no objects' '
|
||||
test -s "$U.D" &&
|
||||
! grep " want" "$U.D"
|
||||
'
|
||||
|
||||
cd "$base_dir"
|
||||
|
||||
@@ -173,12 +176,13 @@ test_expect_success 'fetch with incomplete alternates' '
|
||||
(
|
||||
cd K &&
|
||||
git remote add J "file://$base_dir/J" &&
|
||||
GIT_DEBUG_SEND_PACK=3 git fetch J 3>"$U.K"
|
||||
GIT_TRACE_PACKET=$U.K git fetch J
|
||||
) &&
|
||||
master_object=$(cd A && git for-each-ref --format="%(objectname)" refs/heads/master) &&
|
||||
! grep "^want $master_object" "$U.K" &&
|
||||
test -s "$U.K" &&
|
||||
! grep " want $master_object" "$U.K" &&
|
||||
tag_object=$(cd A && git for-each-ref --format="%(objectname)" refs/tags/HEAD) &&
|
||||
! grep "^want $tag_object" "$U.K"
|
||||
! grep " want $tag_object" "$U.K"
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
Reference in New Issue
Block a user