3 test_description
='test automatic tag following'
7 # End state of the repository:
11 # L - A ------ O ------ B
14 # origin/master master
16 test_expect_success setup
'
21 L=$(git rev-parse --verify HEAD) &&
27 git remote add -f origin ..
34 A=$(git rev-parse --verify HEAD)
45 test_expect_success
'fetch A (new commit : 1 connection)' '
49 GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
50 test $A = $(git rev-parse --verify origin/master)
53 cut -d" " -f1,2 $U >actual &&
54 git diff expect actual
57 test_expect_success
"create tag T on A, create C on branch cat" '
58 git tag -a -m tag1 tag1 $A &&
59 T=$(git rev-parse --verify tag1) &&
61 git checkout -b cat &&
65 C=$(git rev-parse --verify HEAD) &&
76 test_expect_success
'fetch C, T (new branch, tag : 1 connection)' '
80 GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
81 test $C = $(git rev-parse --verify origin/cat) &&
82 test $T = $(git rev-parse --verify tag1) &&
83 test $A = $(git rev-parse --verify tag1^0)
86 cut -d" " -f1,2 $U >actual &&
87 git diff expect actual
90 test_expect_success
"create commits O, B, tag S on B" '
100 B=$(git rev-parse --verify HEAD) &&
102 git tag -a -m tag2 tag2 $B &&
103 S=$(git rev-parse --verify tag2)
113 test_expect_success
'fetch B, S (commit and tag : 1 connection)' '
117 GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
118 test $B = $(git rev-parse --verify origin/master) &&
119 test $B = $(git rev-parse --verify tag2^0) &&
120 test $S = $(git rev-parse --verify tag2)
123 cut -d" " -f1,2 $U >actual &&
124 git diff expect actual
134 test_expect_success
'new clone fetch master and tags' '
141 git remote add origin .. &&
142 GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
143 test $B = $(git rev-parse --verify origin/master) &&
144 test $S = $(git rev-parse --verify tag2) &&
145 test $B = $(git rev-parse --verify tag2^0) &&
146 test $T = $(git rev-parse --verify tag1) &&
147 test $A = $(git rev-parse --verify tag1^0)
150 cut -d" " -f1,2 $U >actual &&
151 git diff expect actual