2008-03-03 03:35:33 +01:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
test_description='test automatic tag following'
|
|
|
|
|
|
|
|
. ./test-lib.sh
|
|
|
|
|
2010-10-08 23:03:15 +02:00
|
|
|
if ! test_have_prereq NOT_MINGW; then
|
2013-02-20 20:55:28 +01:00
|
|
|
say "GIT_TRACE_PACKET not supported - skipping tests"
|
2010-09-27 23:02:57 +02:00
|
|
|
fi
|
2009-03-20 22:03:33 +01:00
|
|
|
|
2008-03-03 03:35:33 +01:00
|
|
|
# End state of the repository:
|
|
|
|
#
|
|
|
|
# T - tag1 S - tag2
|
|
|
|
# / /
|
|
|
|
# L - A ------ O ------ B
|
|
|
|
# \ \ \
|
|
|
|
# \ C - origin/cat \
|
|
|
|
# origin/master master
|
|
|
|
|
2010-08-11 21:04:07 +02:00
|
|
|
test_expect_success NOT_MINGW setup '
|
2008-03-03 03:35:33 +01:00
|
|
|
test_tick &&
|
|
|
|
echo ichi >file &&
|
|
|
|
git add file &&
|
|
|
|
git commit -m L &&
|
|
|
|
L=$(git rev-parse --verify HEAD) &&
|
|
|
|
|
|
|
|
(
|
|
|
|
mkdir cloned &&
|
|
|
|
cd cloned &&
|
|
|
|
git init-db &&
|
|
|
|
git remote add -f origin ..
|
|
|
|
) &&
|
|
|
|
|
|
|
|
test_tick &&
|
|
|
|
echo A >file &&
|
|
|
|
git add file &&
|
|
|
|
git commit -m A &&
|
|
|
|
A=$(git rev-parse --verify HEAD)
|
|
|
|
'
|
|
|
|
|
|
|
|
U=UPLOAD_LOG
|
|
|
|
|
2010-08-11 21:04:07 +02:00
|
|
|
test_expect_success NOT_MINGW 'setup expect' '
|
2008-03-03 03:35:33 +01:00
|
|
|
cat - <<EOF >expect
|
|
|
|
want $A
|
|
|
|
EOF
|
2010-08-11 21:04:07 +02:00
|
|
|
'
|
|
|
|
|
2013-02-20 20:55:28 +01:00
|
|
|
get_needs () {
|
|
|
|
perl -alne '
|
|
|
|
next unless $F[1] eq "upload-pack<";
|
|
|
|
last if $F[2] eq "0000";
|
|
|
|
print $F[2], " ", $F[3];
|
|
|
|
' "$@"
|
|
|
|
}
|
|
|
|
|
2010-08-11 21:04:07 +02:00
|
|
|
test_expect_success NOT_MINGW 'fetch A (new commit : 1 connection)' '
|
2010-10-31 08:30:58 +01:00
|
|
|
rm -f $U &&
|
2008-03-03 03:35:33 +01:00
|
|
|
(
|
|
|
|
cd cloned &&
|
2013-02-20 20:55:28 +01:00
|
|
|
GIT_TRACE_PACKET=3 git fetch 3>../$U &&
|
2008-03-03 03:35:33 +01:00
|
|
|
test $A = $(git rev-parse --verify origin/master)
|
|
|
|
) &&
|
2013-02-20 20:55:28 +01:00
|
|
|
get_needs $U >actual &&
|
2008-05-24 07:28:56 +02:00
|
|
|
test_cmp expect actual
|
2008-03-03 03:35:33 +01:00
|
|
|
'
|
|
|
|
|
2010-08-11 21:04:07 +02:00
|
|
|
test_expect_success NOT_MINGW "create tag T on A, create C on branch cat" '
|
2008-03-03 03:35:33 +01:00
|
|
|
git tag -a -m tag1 tag1 $A &&
|
|
|
|
T=$(git rev-parse --verify tag1) &&
|
|
|
|
|
|
|
|
git checkout -b cat &&
|
|
|
|
echo C >file &&
|
|
|
|
git add file &&
|
|
|
|
git commit -m C &&
|
|
|
|
C=$(git rev-parse --verify HEAD) &&
|
|
|
|
git checkout master
|
|
|
|
'
|
|
|
|
|
2010-08-11 21:04:07 +02:00
|
|
|
test_expect_success NOT_MINGW 'setup expect' '
|
2008-03-03 03:35:33 +01:00
|
|
|
cat - <<EOF >expect
|
|
|
|
want $C
|
|
|
|
want $T
|
|
|
|
EOF
|
2010-08-11 21:04:07 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success NOT_MINGW 'fetch C, T (new branch, tag : 1 connection)' '
|
2010-10-31 08:30:58 +01:00
|
|
|
rm -f $U &&
|
2008-03-03 03:35:33 +01:00
|
|
|
(
|
|
|
|
cd cloned &&
|
2013-02-20 20:55:28 +01:00
|
|
|
GIT_TRACE_PACKET=3 git fetch 3>../$U &&
|
2008-03-03 03:35:33 +01:00
|
|
|
test $C = $(git rev-parse --verify origin/cat) &&
|
|
|
|
test $T = $(git rev-parse --verify tag1) &&
|
|
|
|
test $A = $(git rev-parse --verify tag1^0)
|
|
|
|
) &&
|
2013-02-20 20:55:28 +01:00
|
|
|
get_needs $U >actual &&
|
2008-05-24 07:28:56 +02:00
|
|
|
test_cmp expect actual
|
2008-03-03 03:35:33 +01:00
|
|
|
'
|
|
|
|
|
2010-08-11 21:04:07 +02:00
|
|
|
test_expect_success NOT_MINGW "create commits O, B, tag S on B" '
|
2008-03-03 03:35:33 +01:00
|
|
|
test_tick &&
|
|
|
|
echo O >file &&
|
|
|
|
git add file &&
|
|
|
|
git commit -m O &&
|
|
|
|
|
|
|
|
test_tick &&
|
|
|
|
echo B >file &&
|
|
|
|
git add file &&
|
|
|
|
git commit -m B &&
|
|
|
|
B=$(git rev-parse --verify HEAD) &&
|
|
|
|
|
|
|
|
git tag -a -m tag2 tag2 $B &&
|
|
|
|
S=$(git rev-parse --verify tag2)
|
|
|
|
'
|
|
|
|
|
2010-08-11 21:04:07 +02:00
|
|
|
test_expect_success NOT_MINGW 'setup expect' '
|
2008-03-03 03:35:33 +01:00
|
|
|
cat - <<EOF >expect
|
|
|
|
want $B
|
|
|
|
want $S
|
|
|
|
EOF
|
2010-08-11 21:04:07 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success NOT_MINGW 'fetch B, S (commit and tag : 1 connection)' '
|
2010-10-31 08:30:58 +01:00
|
|
|
rm -f $U &&
|
2008-03-03 03:35:33 +01:00
|
|
|
(
|
|
|
|
cd cloned &&
|
2013-02-20 20:55:28 +01:00
|
|
|
GIT_TRACE_PACKET=3 git fetch 3>../$U &&
|
2008-03-03 03:35:33 +01:00
|
|
|
test $B = $(git rev-parse --verify origin/master) &&
|
|
|
|
test $B = $(git rev-parse --verify tag2^0) &&
|
|
|
|
test $S = $(git rev-parse --verify tag2)
|
|
|
|
) &&
|
2013-02-20 20:55:28 +01:00
|
|
|
get_needs $U >actual &&
|
2008-05-24 07:28:56 +02:00
|
|
|
test_cmp expect actual
|
2008-03-03 03:35:33 +01:00
|
|
|
'
|
|
|
|
|
2010-08-11 21:04:07 +02:00
|
|
|
test_expect_success NOT_MINGW 'setup expect' '
|
2008-03-04 04:27:40 +01:00
|
|
|
cat - <<EOF >expect
|
|
|
|
want $B
|
|
|
|
want $S
|
|
|
|
EOF
|
2010-08-11 21:04:07 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success NOT_MINGW 'new clone fetch master and tags' '
|
2008-03-04 04:27:40 +01:00
|
|
|
git branch -D cat
|
|
|
|
rm -f $U
|
|
|
|
(
|
|
|
|
mkdir clone2 &&
|
|
|
|
cd clone2 &&
|
|
|
|
git init &&
|
|
|
|
git remote add origin .. &&
|
2013-02-20 20:55:28 +01:00
|
|
|
GIT_TRACE_PACKET=3 git fetch 3>../$U &&
|
2008-03-04 04:27:40 +01:00
|
|
|
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)
|
|
|
|
) &&
|
2013-02-20 20:55:28 +01:00
|
|
|
get_needs $U >actual &&
|
2008-05-24 07:28:56 +02:00
|
|
|
test_cmp expect actual
|
2008-03-04 04:27:40 +01:00
|
|
|
'
|
|
|
|
|
2008-03-03 03:35:33 +01:00
|
|
|
test_done
|