3 test_description='test refspec written by clone-command'
4 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
5 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
9 test_expect_success 'setup' '
10 # Make two branches, "main" and "side"
15 git commit -a -m two &&
18 git commit -a -m three &&
19 git checkout -b side &&
21 git commit -a -m four &&
26 git clone . dir_all &&
28 # default clone --no-tags
29 git clone --no-tags . dir_all_no_tags &&
31 # default --single that follows HEAD=main
32 git clone --single-branch . dir_main &&
34 # default --single that follows HEAD=main with no tags
35 git clone --single-branch --no-tags . dir_main_no_tags &&
37 # default --single that follows HEAD=side
39 git clone --single-branch . dir_side &&
41 # explicit --single that follows side
43 git clone --single-branch --branch side . dir_side2 &&
45 # default --single with --mirror
46 git clone --single-branch --mirror . dir_mirror &&
48 # default --single with --branch and --mirror
49 git clone --single-branch --mirror --branch side . dir_mirror_side &&
51 # --single that does not know what branch to follow
53 git clone --single-branch . dir_detached &&
55 # explicit --single with tag
56 git clone --single-branch --branch two . dir_tag &&
58 # explicit --single with tag and --no-tags
59 git clone --single-branch --no-tags --branch two . dir_tag_no_tags &&
61 # advance both "main" and "side" branches
64 git commit -a -m five &&
67 git commit -a -m six &&
70 git tag -d two && git tag two
73 test_expect_success 'by default all branches will be kept updated' '
77 git for-each-ref refs/remotes/origin >refs &&
79 -e "s|/remotes/origin/|/heads/|" refs >../actual
81 # follow both main and side
82 git for-each-ref refs/heads >expect &&
83 test_cmp expect actual
86 test_expect_success 'by default no tags will be kept updated' '
90 git for-each-ref refs/tags >../actual
92 git for-each-ref refs/tags >expect &&
93 ! test_cmp expect actual &&
94 test_line_count = 2 actual
97 test_expect_success 'clone with --no-tags' '
101 git for-each-ref refs/tags >../actual
103 test_must_be_empty actual
106 test_expect_success '--single-branch while HEAD pointing at main' '
110 git for-each-ref refs/remotes/origin >refs &&
112 -e "s|/remotes/origin/|/heads/|" refs >../actual
115 git for-each-ref refs/heads/main >expect &&
116 # get & check latest tags
117 test_cmp expect actual &&
120 git fetch --tags --force &&
121 git for-each-ref refs/tags >../actual
123 git for-each-ref refs/tags >expect &&
124 test_cmp expect actual &&
125 test_line_count = 2 actual
128 test_expect_success '--single-branch while HEAD pointing at main and --no-tags' '
130 cd dir_main_no_tags &&
132 git for-each-ref refs/remotes/origin >refs &&
134 -e "s|/remotes/origin/|/heads/|" refs >../actual
137 git for-each-ref refs/heads/main >expect &&
138 test_cmp expect actual &&
141 cd dir_main_no_tags &&
143 git for-each-ref refs/tags >../actual
145 test_must_be_empty actual &&
146 test_line_count = 0 actual &&
147 # get tags with --tags overrides tagOpt
149 cd dir_main_no_tags &&
151 git for-each-ref refs/tags >../actual
153 git for-each-ref refs/tags >expect &&
154 test_cmp expect actual &&
155 test_line_count = 2 actual
158 test_expect_success '--single-branch while HEAD pointing at side' '
162 git for-each-ref refs/remotes/origin >refs &&
164 -e "s|/remotes/origin/|/heads/|" refs >../actual
167 git for-each-ref refs/heads/side >expect &&
168 test_cmp expect actual
171 test_expect_success '--single-branch with explicit --branch side' '
175 git for-each-ref refs/remotes/origin >refs &&
177 -e "s|/remotes/origin/|/heads/|" refs >../actual
180 git for-each-ref refs/heads/side >expect &&
181 test_cmp expect actual
184 test_expect_success '--single-branch with explicit --branch with tag fetches updated tag' '
188 git for-each-ref refs/tags >../actual
190 git for-each-ref refs/tags >expect &&
191 test_cmp expect actual
194 test_expect_success '--single-branch with explicit --branch with tag fetches updated tag despite --no-tags' '
196 cd dir_tag_no_tags &&
198 git for-each-ref refs/tags >../actual
200 git for-each-ref refs/tags/two >expect &&
201 test_cmp expect actual &&
202 test_line_count = 1 actual
205 test_expect_success '--single-branch with --mirror' '
209 git for-each-ref refs > ../actual
211 git for-each-ref refs >expect &&
212 test_cmp expect actual
215 test_expect_success '--single-branch with explicit --branch and --mirror' '
217 cd dir_mirror_side &&
219 git for-each-ref refs > ../actual
221 git for-each-ref refs >expect &&
222 test_cmp expect actual
225 test_expect_success '--single-branch with detached' '
229 git for-each-ref refs/remotes/origin >refs &&
231 -e "s|/remotes/origin/|/heads/|" refs >../actual
234 test_must_be_empty actual