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 &&
20
21 # default clone
22 git clone . dir_all &&
23
24 # default --single that follows HEAD=master
25 git clone --single-branch . dir_master &&
26
27 # default --single that follows HEAD=side
28 git checkout side &&
29 git clone --single-branch . dir_side &&
30
31 # explicit --single that follows side
32 git checkout master &&
33 git clone --single-branch --branch side . dir_side2 &&
34
35 # default --single with --mirror
36 git clone --single-branch --mirror . dir_mirror &&
37
38 # default --single with --branch and --mirror
39 git clone --single-branch --mirror --branch side . dir_mirror_side &&
40
41 # --single that does not know what branch to follow
42 git checkout two^ &&
43 git clone --single-branch . dir_detached &&
44
45 # explicit --single with tag
46 git clone --single-branch --branch two . dir_tag &&
47
48 # advance both "master" and "side" branches
49 git checkout side &&
50 echo five >file &&
51 git commit -a -m five &&
52 git checkout master &&
53 echo six >file &&
54 git commit -a -m six &&
55
56 # update tag
57 git tag -d two && git tag two
58'
59
60test_expect_success 'by default all branches will be kept updated' '
61 (
62 cd dir_all && git fetch &&
63 git for-each-ref refs/remotes/origin |
64 sed -e "/HEAD$/d" \
65 -e "s|/remotes/origin/|/heads/|" >../actual
66 ) &&
67 # follow both master and side
68 git for-each-ref refs/heads >expect &&
69 test_cmp expect actual
70'
71
72test_expect_success 'by default no tags will be kept updated' '
73 (
74 cd dir_all && git fetch &&
75 git for-each-ref refs/tags >../actual
76 ) &&
77 git for-each-ref refs/tags >expect &&
78 test_must_fail test_cmp expect actual
79'
80
81test_expect_success '--single-branch while HEAD pointing at master' '
82 (
83 cd dir_master && git fetch &&
84 git for-each-ref refs/remotes/origin |
85 sed -e "/HEAD$/d" \
86 -e "s|/remotes/origin/|/heads/|" >../actual
87 ) &&
88 # only follow master
89 git for-each-ref refs/heads/master >expect &&
90 test_cmp expect actual
91'
92
93test_expect_success '--single-branch while HEAD pointing at side' '
94 (
95 cd dir_side && git fetch &&
96 git for-each-ref refs/remotes/origin |
97 sed -e "/HEAD$/d" \
98 -e "s|/remotes/origin/|/heads/|" >../actual
99 ) &&
100 # only follow side
101 git for-each-ref refs/heads/side >expect &&
102 test_cmp expect actual
103'
104
105test_expect_success '--single-branch with explicit --branch side' '
106 (
107 cd dir_side2 && git fetch &&
108 git for-each-ref refs/remotes/origin |
109 sed -e "/HEAD$/d" \
110 -e "s|/remotes/origin/|/heads/|" >../actual
111 ) &&
112 # only follow side
113 git for-each-ref refs/heads/side >expect &&
114 test_cmp expect actual
115'
116
117test_expect_success '--single-branch with explicit --branch with tag fetches updated tag' '
118 (
119 cd dir_tag && git fetch &&
120 git for-each-ref refs/tags >../actual
121 ) &&
122 git for-each-ref refs/tags >expect &&
123 test_cmp expect actual
124'
125
126test_expect_success '--single-branch with --mirror' '
127 (
128 cd dir_mirror && git fetch &&
129 git for-each-ref refs > ../actual
130 ) &&
131 git for-each-ref refs >expect &&
132 test_cmp expect actual
133'
134
135test_expect_success '--single-branch with explicit --branch and --mirror' '
136 (
137 cd dir_mirror_side && git fetch &&
138 git for-each-ref refs > ../actual
139 ) &&
140 git for-each-ref refs >expect &&
141 test_cmp expect actual
142'
143
144test_expect_success '--single-branch with detached' '
145 (
146 cd dir_detached && git fetch &&
147 git for-each-ref refs/remotes/origin |
148 sed -e "/HEAD$/d" \
149 -e "s|/remotes/origin/|/heads/|" >../actual
150 )
151 # nothing
152 >expect &&
153 test_cmp expect actual
154'
155
156test_done