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