]> git.ipfire.org Git - thirdparty/git.git/blob - t/t5521-pull-options.sh
Merge branch 'wb/fsmonitor-bitmap-fix'
[thirdparty/git.git] / t / t5521-pull-options.sh
1 #!/bin/sh
2
3 test_description='pull options'
4
5 . ./test-lib.sh
6
7 test_expect_success 'setup' '
8 mkdir parent &&
9 (cd parent && git init &&
10 echo one >file && git add file &&
11 git commit -m one)
12 '
13
14 test_expect_success 'git pull -q' '
15 mkdir clonedq &&
16 (cd clonedq && git init &&
17 git pull -q "../parent" >out 2>err &&
18 test_must_be_empty err &&
19 test_must_be_empty out)
20 '
21
22 test_expect_success 'git pull -q --rebase' '
23 mkdir clonedqrb &&
24 (cd clonedqrb && git init &&
25 git pull -q --rebase "../parent" >out 2>err &&
26 test_must_be_empty err &&
27 test_must_be_empty out &&
28 git pull -q --rebase "../parent" >out 2>err &&
29 test_must_be_empty err &&
30 test_must_be_empty out)
31 '
32
33 test_expect_success 'git pull' '
34 mkdir cloned &&
35 (cd cloned && git init &&
36 git pull "../parent" >out 2>err &&
37 test -s err &&
38 test_must_be_empty out)
39 '
40
41 test_expect_success 'git pull --rebase' '
42 mkdir clonedrb &&
43 (cd clonedrb && git init &&
44 git pull --rebase "../parent" >out 2>err &&
45 test -s err &&
46 test_must_be_empty out)
47 '
48
49 test_expect_success 'git pull -v' '
50 mkdir clonedv &&
51 (cd clonedv && git init &&
52 git pull -v "../parent" >out 2>err &&
53 test -s err &&
54 test_must_be_empty out)
55 '
56
57 test_expect_success 'git pull -v --rebase' '
58 mkdir clonedvrb &&
59 (cd clonedvrb && git init &&
60 git pull -v --rebase "../parent" >out 2>err &&
61 test -s err &&
62 test_must_be_empty out)
63 '
64
65 test_expect_success 'git pull -v -q' '
66 mkdir clonedvq &&
67 (cd clonedvq && git init &&
68 git pull -v -q "../parent" >out 2>err &&
69 test_must_be_empty out &&
70 test_must_be_empty err)
71 '
72
73 test_expect_success 'git pull -q -v' '
74 mkdir clonedqv &&
75 (cd clonedqv && git init &&
76 git pull -q -v "../parent" >out 2>err &&
77 test_must_be_empty out &&
78 test -s err)
79 '
80 test_expect_success 'git pull --cleanup errors early on invalid argument' '
81 mkdir clonedcleanup &&
82 (cd clonedcleanup && git init &&
83 test_must_fail git pull --cleanup invalid "../parent" >out 2>err &&
84 test_must_be_empty out &&
85 test -s err)
86 '
87
88
89 test_expect_success 'git pull --force' '
90 mkdir clonedoldstyle &&
91 (cd clonedoldstyle && git init &&
92 cat >>.git/config <<-\EOF &&
93 [remote "one"]
94 url = ../parent
95 fetch = refs/heads/master:refs/heads/mirror
96 [remote "two"]
97 url = ../parent
98 fetch = refs/heads/master:refs/heads/origin
99 [branch "master"]
100 remote = two
101 merge = refs/heads/master
102 EOF
103 git pull two &&
104 test_commit A &&
105 git branch -f origin &&
106 git pull --all --force
107 )
108 '
109
110 test_expect_success 'git pull --all' '
111 mkdir clonedmulti &&
112 (cd clonedmulti && git init &&
113 cat >>.git/config <<-\EOF &&
114 [remote "one"]
115 url = ../parent
116 fetch = refs/heads/*:refs/remotes/one/*
117 [remote "two"]
118 url = ../parent
119 fetch = refs/heads/*:refs/remotes/two/*
120 [branch "master"]
121 remote = one
122 merge = refs/heads/master
123 EOF
124 git pull --all
125 )
126 '
127
128 test_expect_success 'git pull --dry-run' '
129 test_when_finished "rm -rf clonedry" &&
130 git init clonedry &&
131 (
132 cd clonedry &&
133 git pull --dry-run ../parent &&
134 test_path_is_missing .git/FETCH_HEAD &&
135 test_path_is_missing .git/refs/heads/master &&
136 test_path_is_missing .git/index &&
137 test_path_is_missing file
138 )
139 '
140
141 test_expect_success 'git pull --all --dry-run' '
142 test_when_finished "rm -rf cloneddry" &&
143 git init clonedry &&
144 (
145 cd clonedry &&
146 git remote add origin ../parent &&
147 git pull --all --dry-run &&
148 test_path_is_missing .git/FETCH_HEAD &&
149 test_path_is_missing .git/refs/remotes/origin/master &&
150 test_path_is_missing .git/index &&
151 test_path_is_missing file
152 )
153 '
154
155 test_expect_success 'git pull --allow-unrelated-histories' '
156 test_when_finished "rm -fr src dst" &&
157 git init src &&
158 (
159 cd src &&
160 test_commit one &&
161 test_commit two
162 ) &&
163 git clone src dst &&
164 (
165 cd src &&
166 git checkout --orphan side HEAD^ &&
167 test_commit three
168 ) &&
169 (
170 cd dst &&
171 test_must_fail git pull ../src side &&
172 git pull --allow-unrelated-histories ../src side
173 )
174 '
175
176 test_expect_success 'git pull does not add a sign-off line' '
177 test_when_finished "rm -fr src dst actual" &&
178 git init src &&
179 test_commit -C src one &&
180 git clone src dst &&
181 test_commit -C src two &&
182 git -C dst pull --no-ff &&
183 git -C dst show -s --pretty="format:%(trailers)" HEAD >actual &&
184 test_must_be_empty actual
185 '
186
187 test_expect_success 'git pull --no-signoff does not add sign-off line' '
188 test_when_finished "rm -fr src dst actual" &&
189 git init src &&
190 test_commit -C src one &&
191 git clone src dst &&
192 test_commit -C src two &&
193 git -C dst pull --no-signoff --no-ff &&
194 git -C dst show -s --pretty="format:%(trailers)" HEAD >actual &&
195 test_must_be_empty actual
196 '
197
198 test_expect_success 'git pull --signoff add a sign-off line' '
199 test_when_finished "rm -fr src dst expected actual" &&
200 echo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" >expected &&
201 git init src &&
202 test_commit -C src one &&
203 git clone src dst &&
204 test_commit -C src two &&
205 git -C dst pull --signoff --no-ff &&
206 git -C dst show -s --pretty="format:%(trailers)" HEAD >actual &&
207 test_cmp expected actual
208 '
209
210 test_expect_success 'git pull --no-signoff flag cancels --signoff flag' '
211 test_when_finished "rm -fr src dst actual" &&
212 git init src &&
213 test_commit -C src one &&
214 git clone src dst &&
215 test_commit -C src two &&
216 git -C dst pull --signoff --no-signoff --no-ff &&
217 git -C dst show -s --pretty="format:%(trailers)" HEAD >actual &&
218 test_must_be_empty actual
219 '
220
221 test_done