blob: ea78f1ff31c7e1dd2b39a39231b9cec54e57a1ad (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
#!/bin/sh
test_description='Test shallow cloning of repos with submodules'
. ./test-lib.sh
pwd=$(pwd)
test_expect_success 'setup' '
git checkout -b master &&
test_commit commit1 &&
test_commit commit2 &&
mkdir sub &&
(
cd sub &&
git init &&
test_commit subcommit1 &&
test_commit subcommit2 &&
test_commit subcommit3
) &&
git submodule add "file://$pwd/sub" sub &&
git commit -m "add submodule"
'
test_expect_success 'nonshallow clone implies nonshallow submodule' '
test_when_finished "rm -rf super_clone" &&
git clone --recurse-submodules "file://$pwd/." super_clone &&
(
cd super_clone &&
git log --oneline >lines &&
test_line_count = 3 lines
) &&
(
cd super_clone/sub &&
git log --oneline >lines &&
test_line_count = 3 lines
)
'
test_expect_success 'shallow clone with shallow submodule' '
test_when_finished "rm -rf super_clone" &&
git clone --recurse-submodules --depth 2 --shallow-submodules "file://$pwd/." super_clone &&
(
cd super_clone &&
git log --oneline >lines &&
test_line_count = 2 lines
) &&
(
cd super_clone/sub &&
git log --oneline >lines &&
test_line_count = 1 lines
)
'
test_expect_success 'shallow clone does not imply shallow submodule' '
test_when_finished "rm -rf super_clone" &&
git clone --recurse-submodules --depth 2 "file://$pwd/." super_clone &&
(
cd super_clone &&
git log --oneline >lines &&
test_line_count = 2 lines
) &&
(
cd super_clone/sub &&
git log --oneline >lines &&
test_line_count = 3 lines
)
'
test_expect_success 'shallow clone with non shallow submodule' '
test_when_finished "rm -rf super_clone" &&
git clone --recurse-submodules --depth 2 --no-shallow-submodules "file://$pwd/." super_clone &&
(
cd super_clone &&
git log --oneline >lines &&
test_line_count = 2 lines
) &&
(
cd super_clone/sub &&
git log --oneline >lines &&
test_line_count = 3 lines
)
'
test_expect_success 'non shallow clone with shallow submodule' '
test_when_finished "rm -rf super_clone" &&
git clone --recurse-submodules --no-local --shallow-submodules "file://$pwd/." super_clone &&
(
cd super_clone &&
git log --oneline >lines &&
test_line_count = 3 lines
) &&
(
cd super_clone/sub &&
git log --oneline >lines &&
test_line_count = 1 lines
)
'
test_expect_success 'clone follows shallow recommendation' '
test_when_finished "rm -rf super_clone" &&
git config -f .gitmodules submodule.sub.shallow true &&
git add .gitmodules &&
git commit -m "recommed shallow for sub" &&
git clone --recurse-submodules --no-local "file://$pwd/." super_clone &&
(
cd super_clone &&
git log --oneline >lines &&
test_line_count = 4 lines
) &&
(
cd super_clone/sub &&
git log --oneline >lines &&
test_line_count = 1 lines
)
'
test_expect_success 'get unshallow recommended shallow submodule' '
test_when_finished "rm -rf super_clone" &&
git clone --no-local "file://$pwd/." super_clone &&
(
cd super_clone &&
git submodule update --init --no-recommend-shallow &&
git log --oneline >lines &&
test_line_count = 4 lines
) &&
(
cd super_clone/sub &&
git log --oneline >lines &&
test_line_count = 3 lines
)
'
test_expect_success 'clone follows non shallow recommendation' '
test_when_finished "rm -rf super_clone" &&
git config -f .gitmodules submodule.sub.shallow false &&
git add .gitmodules &&
git commit -m "recommed non shallow for sub" &&
git clone --recurse-submodules --no-local "file://$pwd/." super_clone &&
(
cd super_clone &&
git log --oneline >lines &&
test_line_count = 5 lines
) &&
(
cd super_clone/sub &&
git log --oneline >lines &&
test_line_count = 3 lines
)
'
test_done
|