1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
|
#!/bin/sh
test_description='test automatic tag following'
. ./test-lib.sh
case $(uname -s) in
*MINGW*)
skip_all="GIT_DEBUG_SEND_PACK not supported - skipping tests"
test_done
esac
# End state of the repository:
#
# T - tag1 S - tag2
# / /
# L - A ------ O ------ B
# \ \ \
# \ C - origin/cat \
# origin/master master
test_expect_success setup '
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
cat - <<EOF >expect
#S
want $A
#E
EOF
test_expect_success 'fetch A (new commit : 1 connection)' '
rm -f $U
(
cd cloned &&
GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
test $A = $(git rev-parse --verify origin/master)
) &&
test -s $U &&
cut -d" " -f1,2 $U >actual &&
test_cmp expect actual
'
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) &&
git checkout -b cat &&
echo C >file &&
git add file &&
git commit -m C &&
C=$(git rev-parse --verify HEAD) &&
git checkout master
'
cat - <<EOF >expect
#S
want $C
want $T
#E
EOF
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 &&
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 &&
test_cmp expect actual
'
test_expect_success "create commits O, B, tag S on B" '
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)
'
cat - <<EOF >expect
#S
want $B
want $S
#E
EOF
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 &&
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 &&
test_cmp expect actual
'
cat - <<EOF >expect
#S
want $B
want $S
#E
EOF
test_expect_success 'new clone fetch master and tags' '
git branch -D cat
rm -f $U
(
mkdir clone2 &&
cd clone2 &&
git init &&
git remote add origin .. &&
GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
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 &&
test_cmp expect actual
'
test_done
|