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