]> git.ipfire.org Git - thirdparty/git.git/blame - t/t5612-clone-refspec.sh
path.c: don't call the match function without value in trie_find()
[thirdparty/git.git] / t / t5612-clone-refspec.sh
CommitLineData
31b808a0
RT
1#!/bin/sh
2
3test_description='test refspec written by clone-command'
4. ./test-lib.sh
5
6test_expect_success 'setup' '
7 # Make two branches, "master" and "side"
8 echo one >file &&
9 git add file &&
10 git commit -m one &&
11 echo two >file &&
12 git commit -a -m two &&
13 git tag two &&
14 echo three >file &&
15 git commit -a -m three &&
16 git checkout -b side &&
17 echo four >file &&
18 git commit -a -m four &&
19 git checkout master &&
0dab2468 20 git tag five &&
31b808a0
RT
21
22 # default clone
23 git clone . dir_all &&
24
0dab2468
ÆAB
25 # default clone --no-tags
26 git clone --no-tags . dir_all_no_tags &&
27
31b808a0
RT
28 # default --single that follows HEAD=master
29 git clone --single-branch . dir_master &&
30
0dab2468
ÆAB
31 # default --single that follows HEAD=master with no tags
32 git clone --single-branch --no-tags . dir_master_no_tags &&
33
31b808a0
RT
34 # default --single that follows HEAD=side
35 git checkout side &&
36 git clone --single-branch . dir_side &&
37
38 # explicit --single that follows side
39 git checkout master &&
40 git clone --single-branch --branch side . dir_side2 &&
41
42 # default --single with --mirror
43 git clone --single-branch --mirror . dir_mirror &&
44
45 # default --single with --branch and --mirror
46 git clone --single-branch --mirror --branch side . dir_mirror_side &&
47
48 # --single that does not know what branch to follow
49 git checkout two^ &&
50 git clone --single-branch . dir_detached &&
51
52 # explicit --single with tag
53 git clone --single-branch --branch two . dir_tag &&
54
0dab2468
ÆAB
55 # explicit --single with tag and --no-tags
56 git clone --single-branch --no-tags --branch two . dir_tag_no_tags &&
57
31b808a0
RT
58 # advance both "master" and "side" branches
59 git checkout side &&
60 echo five >file &&
61 git commit -a -m five &&
62 git checkout master &&
63 echo six >file &&
64 git commit -a -m six &&
65
66 # update tag
67 git tag -d two && git tag two
68'
69
70test_expect_success 'by default all branches will be kept updated' '
71 (
28d67d9a
ÆAB
72 cd dir_all &&
73 git fetch &&
31b808a0
RT
74 git for-each-ref refs/remotes/origin |
75 sed -e "/HEAD$/d" \
76 -e "s|/remotes/origin/|/heads/|" >../actual
77 ) &&
78 # follow both master and side
79 git for-each-ref refs/heads >expect &&
80 test_cmp expect actual
81'
82
83test_expect_success 'by default no tags will be kept updated' '
84 (
28d67d9a
ÆAB
85 cd dir_all &&
86 git fetch &&
31b808a0
RT
87 git for-each-ref refs/tags >../actual
88 ) &&
89 git for-each-ref refs/tags >expect &&
0dab2468
ÆAB
90 test_must_fail test_cmp expect actual &&
91 test_line_count = 2 actual
92'
93
94test_expect_success 'clone with --no-tags' '
95 (
96 cd dir_all_no_tags &&
97 git fetch &&
98 git for-each-ref refs/tags >../actual
99 ) &&
d3c6751b 100 test_must_be_empty actual
31b808a0
RT
101'
102
103test_expect_success '--single-branch while HEAD pointing at master' '
104 (
28d67d9a 105 cd dir_master &&
0bc8d71b 106 git fetch --force &&
31b808a0
RT
107 git for-each-ref refs/remotes/origin |
108 sed -e "/HEAD$/d" \
109 -e "s|/remotes/origin/|/heads/|" >../actual
110 ) &&
111 # only follow master
112 git for-each-ref refs/heads/master >expect &&
0dab2468
ÆAB
113 # get & check latest tags
114 test_cmp expect actual &&
115 (
116 cd dir_master &&
0bc8d71b 117 git fetch --tags --force &&
0dab2468
ÆAB
118 git for-each-ref refs/tags >../actual
119 ) &&
120 git for-each-ref refs/tags >expect &&
121 test_cmp expect actual &&
122 test_line_count = 2 actual
123'
124
125test_expect_success '--single-branch while HEAD pointing at master and --no-tags' '
126 (
127 cd dir_master_no_tags &&
128 git fetch &&
129 git for-each-ref refs/remotes/origin |
130 sed -e "/HEAD$/d" \
131 -e "s|/remotes/origin/|/heads/|" >../actual
132 ) &&
133 # only follow master
134 git for-each-ref refs/heads/master >expect &&
135 test_cmp expect actual &&
136 # get tags (noop)
137 (
138 cd dir_master_no_tags &&
139 git fetch &&
140 git for-each-ref refs/tags >../actual
141 ) &&
d3c6751b 142 test_must_be_empty actual &&
0dab2468
ÆAB
143 test_line_count = 0 actual &&
144 # get tags with --tags overrides tagOpt
145 (
146 cd dir_master_no_tags &&
147 git fetch --tags &&
148 git for-each-ref refs/tags >../actual
149 ) &&
150 git for-each-ref refs/tags >expect &&
151 test_cmp expect actual &&
152 test_line_count = 2 actual
31b808a0
RT
153'
154
155test_expect_success '--single-branch while HEAD pointing at side' '
156 (
28d67d9a
ÆAB
157 cd dir_side &&
158 git fetch &&
31b808a0
RT
159 git for-each-ref refs/remotes/origin |
160 sed -e "/HEAD$/d" \
161 -e "s|/remotes/origin/|/heads/|" >../actual
162 ) &&
163 # only follow side
164 git for-each-ref refs/heads/side >expect &&
165 test_cmp expect actual
166'
167
168test_expect_success '--single-branch with explicit --branch side' '
169 (
28d67d9a
ÆAB
170 cd dir_side2 &&
171 git fetch &&
31b808a0
RT
172 git for-each-ref refs/remotes/origin |
173 sed -e "/HEAD$/d" \
174 -e "s|/remotes/origin/|/heads/|" >../actual
175 ) &&
176 # only follow side
177 git for-each-ref refs/heads/side >expect &&
178 test_cmp expect actual
179'
180
181test_expect_success '--single-branch with explicit --branch with tag fetches updated tag' '
182 (
28d67d9a
ÆAB
183 cd dir_tag &&
184 git fetch &&
31b808a0
RT
185 git for-each-ref refs/tags >../actual
186 ) &&
187 git for-each-ref refs/tags >expect &&
188 test_cmp expect actual
189'
190
0dab2468
ÆAB
191test_expect_success '--single-branch with explicit --branch with tag fetches updated tag despite --no-tags' '
192 (
193 cd dir_tag_no_tags &&
194 git fetch &&
195 git for-each-ref refs/tags >../actual
196 ) &&
197 git for-each-ref refs/tags/two >expect &&
198 test_cmp expect actual &&
199 test_line_count = 1 actual
200'
201
31b808a0
RT
202test_expect_success '--single-branch with --mirror' '
203 (
28d67d9a
ÆAB
204 cd dir_mirror &&
205 git fetch &&
31b808a0
RT
206 git for-each-ref refs > ../actual
207 ) &&
208 git for-each-ref refs >expect &&
209 test_cmp expect actual
210'
211
212test_expect_success '--single-branch with explicit --branch and --mirror' '
213 (
28d67d9a
ÆAB
214 cd dir_mirror_side &&
215 git fetch &&
31b808a0
RT
216 git for-each-ref refs > ../actual
217 ) &&
218 git for-each-ref refs >expect &&
219 test_cmp expect actual
220'
221
222test_expect_success '--single-branch with detached' '
223 (
28d67d9a
ÆAB
224 cd dir_detached &&
225 git fetch &&
31b808a0
RT
226 git for-each-ref refs/remotes/origin |
227 sed -e "/HEAD$/d" \
228 -e "s|/remotes/origin/|/heads/|" >../actual
60687de5 229 ) &&
31b808a0 230 # nothing
d3c6751b 231 test_must_be_empty actual
31b808a0
RT
232'
233
234test_done