t5300-pack-object: Set up the objects for --strict tests only once.
[git/mingw.git] / t / t5503-tagfollow.sh
blob398b13184c84e3f7232ae9f76d7373e32c6253ae
1 #!/bin/sh
3 test_description='test automatic tag following'
5 . ./test-lib.sh
7 # End state of the repository:
9 # T - tag1 S - tag2
10 # / /
11 # L - A ------ O ------ B
12 # \ \ \
13 # \ C - origin/cat \
14 # origin/master master
16 test_expect_success setup '
17 test_tick &&
18 echo ichi >file &&
19 git add file &&
20 git commit -m L &&
21 L=$(git rev-parse --verify HEAD) &&
24 mkdir cloned &&
25 cd cloned &&
26 git init-db &&
27 git remote add -f origin ..
28 ) &&
30 test_tick &&
31 echo A >file &&
32 git add file &&
33 git commit -m A &&
34 A=$(git rev-parse --verify HEAD)
37 U=UPLOAD_LOG
39 cat - <<EOF >expect
41 want $A
43 EOF
44 test "$is_mingw" ||
45 test_expect_success 'fetch A (new commit : 1 connection)' '
46 rm -f $U
48 cd cloned &&
49 GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
50 test $A = $(git rev-parse --verify origin/master)
51 ) &&
52 test -s $U &&
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 &&
62 echo C >file &&
63 git add file &&
64 git commit -m C &&
65 C=$(git rev-parse --verify HEAD) &&
66 git checkout master
69 cat - <<EOF >expect
71 want $C
72 want $T
74 EOF
75 test "$is_mingw" ||
76 test_expect_success 'fetch C, T (new branch, tag : 1 connection)' '
77 rm -f $U
79 cd cloned &&
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)
84 ) &&
85 test -s $U &&
86 cut -d" " -f1,2 $U >actual &&
87 git diff expect actual
90 test_expect_success "create commits O, B, tag S on B" '
91 test_tick &&
92 echo O >file &&
93 git add file &&
94 git commit -m O &&
96 test_tick &&
97 echo B >file &&
98 git add file &&
99 git commit -m B &&
100 B=$(git rev-parse --verify HEAD) &&
102 git tag -a -m tag2 tag2 $B &&
103 S=$(git rev-parse --verify tag2)
106 cat - <<EOF >expect
108 want $B
109 want $S
112 test "$is_mingw" ||
113 test_expect_success 'fetch B, S (commit and tag : 1 connection)' '
114 rm -f $U
116 cd cloned &&
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)
121 ) &&
122 test -s $U &&
123 cut -d" " -f1,2 $U >actual &&
124 git diff expect actual
127 cat - <<EOF >expect
129 want $B
130 want $S
133 test "$is_mingw" ||
134 test_expect_success 'new clone fetch master and tags' '
135 git branch -D cat
136 rm -f $U
138 mkdir clone2 &&
139 cd clone2 &&
140 git init &&
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)
148 ) &&
149 test -s $U &&
150 cut -d" " -f1,2 $U >actual &&
151 git diff expect actual
154 test_done