3 test_description
='pull options'
7 test_expect_success
'setup' '
9 (cd parent && git init &&
10 echo one >file && git add file &&
14 test_expect_success
'git pull -q --no-rebase' '
16 (cd clonedq && git init &&
17 git pull -q --no-rebase "../parent" >out 2>err &&
18 test_must_be_empty err &&
19 test_must_be_empty out)
22 test_expect_success
'git pull -q --rebase' '
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)
33 test_expect_success
'git pull --no-rebase' '
35 (cd cloned && git init &&
36 git pull --no-rebase "../parent" >out 2>err &&
38 test_must_be_empty out)
41 test_expect_success
'git pull --rebase' '
43 (cd clonedrb && git init &&
44 git pull --rebase "../parent" >out 2>err &&
46 test_must_be_empty out)
49 test_expect_success
'git pull -v --no-rebase' '
51 (cd clonedv && git init &&
52 git pull -v --no-rebase "../parent" >out 2>err &&
54 test_must_be_empty out)
57 test_expect_success
'git pull -v --rebase' '
59 (cd clonedvrb && git init &&
60 git pull -v --rebase "../parent" >out 2>err &&
62 test_must_be_empty out)
65 test_expect_success
'git pull -v -q --no-rebase' '
67 (cd clonedvq && git init &&
68 git pull -v -q --no-rebase "../parent" >out 2>err &&
69 test_must_be_empty out &&
70 test_must_be_empty err)
73 test_expect_success
'git pull -q -v --no-rebase' '
75 (cd clonedqv && git init &&
76 git pull -q -v --no-rebase "../parent" >out 2>err &&
77 test_must_be_empty out &&
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 --no-rebase --cleanup invalid "../parent" >out 2>err &&
84 test_must_be_empty out &&
88 test_expect_success
'git pull --no-write-fetch-head fails' '
90 (cd clonedwfh && git init &&
91 test_expect_code 129 git pull --no-write-fetch-head "../parent" >out 2>err &&
92 test_must_be_empty out &&
93 test_i18ngrep "no-write-fetch-head" err)
96 test_expect_success
'git pull --force' '
97 mkdir clonedoldstyle &&
98 (cd clonedoldstyle && git init &&
99 cat >>.git/config <<-\EOF &&
102 fetch = refs/heads/master:refs/heads/mirror
105 fetch = refs/heads/master:refs/heads/origin
108 merge = refs/heads/master
112 git branch -f origin &&
113 git pull --all --force
117 test_expect_success
'git pull --all' '
119 (cd clonedmulti && git init &&
120 cat >>.git/config <<-\EOF &&
123 fetch = refs/heads/*:refs/remotes/one/*
126 fetch = refs/heads/*:refs/remotes/two/*
129 merge = refs/heads/master
135 test_expect_success
'git pull --dry-run' '
136 test_when_finished "rm -rf clonedry" &&
140 git pull --dry-run ../parent &&
141 test_path_is_missing .git/FETCH_HEAD &&
142 test_path_is_missing .git/refs/heads/master &&
143 test_path_is_missing .git/index &&
144 test_path_is_missing file
148 test_expect_success
'git pull --all --dry-run' '
149 test_when_finished "rm -rf cloneddry" &&
153 git remote add origin ../parent &&
154 git pull --all --dry-run &&
155 test_path_is_missing .git/FETCH_HEAD &&
156 test_path_is_missing .git/refs/remotes/origin/master &&
157 test_path_is_missing .git/index &&
158 test_path_is_missing file
162 test_expect_success
'git pull --allow-unrelated-histories' '
163 test_when_finished "rm -fr src dst" &&
173 git checkout --orphan side HEAD^ &&
178 test_must_fail git pull ../src side &&
179 git pull --allow-unrelated-histories ../src side
183 test_expect_success
'git pull does not add a sign-off line' '
184 test_when_finished "rm -fr src dst actual" &&
186 test_commit -C src one &&
188 test_commit -C src two &&
189 git -C dst pull --no-ff &&
190 git -C dst show -s --pretty="format:%(trailers)" HEAD >actual &&
191 test_must_be_empty actual
194 test_expect_success
'git pull --no-signoff does not add sign-off line' '
195 test_when_finished "rm -fr src dst actual" &&
197 test_commit -C src one &&
199 test_commit -C src two &&
200 git -C dst pull --no-signoff --no-ff &&
201 git -C dst show -s --pretty="format:%(trailers)" HEAD >actual &&
202 test_must_be_empty actual
205 test_expect_success
'git pull --signoff add a sign-off line' '
206 test_when_finished "rm -fr src dst expected actual" &&
207 echo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" >expected &&
209 test_commit -C src one &&
211 test_commit -C src two &&
212 git -C dst pull --signoff --no-ff &&
213 git -C dst show -s --pretty="format:%(trailers)" HEAD >actual &&
214 test_cmp expected actual
217 test_expect_success
'git pull --no-signoff flag cancels --signoff flag' '
218 test_when_finished "rm -fr src dst actual" &&
220 test_commit -C src one &&
222 test_commit -C src two &&
223 git -C dst pull --signoff --no-signoff --no-ff &&
224 git -C dst show -s --pretty="format:%(trailers)" HEAD >actual &&
225 test_must_be_empty actual