t7610-mergetool: use tabs instead of a mix of tabs and spaces

Signed-off-by: David Aguilar <davvid@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

David Aguilar committed Oct 15, 2014 at 01:35 UTC 74578618a0b0d291d214779748edfbafdecb4ae3
1 file changed +459 -459
t/t7610-mergetool.sh
+459 -459
@@ -14,512 +14,512 @@ Testing basic merge tool invocation'
14 # running mergetool
15
16 test_expect_success 'setup' '
17 - git config rerere.enabled true &&
18 - echo master >file1 &&
19 - echo master spaced >"spaced name" &&
20 - echo master file11 >file11 &&
21 - echo master file12 >file12 &&
22 - echo master file13 >file13 &&
23 - echo master file14 >file14 &&
24 - mkdir subdir &&
25 - echo master sub >subdir/file3 &&
26 - test_create_repo submod &&
27 - (
28 - cd submod &&
29 - : >foo &&
30 - git add foo &&
31 - git commit -m "Add foo"
32 - ) &&
33 - git submodule add git://example.com/submod submod &&
34 - git add file1 "spaced name" file1[1-4] subdir/file3 .gitmodules submod &&
35 - git commit -m "add initial versions" &&
36 -
37 - git checkout -b branch1 master &&
38 - git submodule update -N &&
39 - echo branch1 change >file1 &&
40 - echo branch1 newfile >file2 &&
41 - echo branch1 spaced >"spaced name" &&
42 - echo branch1 both added >both &&
43 - echo branch1 change file11 >file11 &&
44 - echo branch1 change file13 >file13 &&
45 - echo branch1 sub >subdir/file3 &&
46 - (
47 - cd submod &&
48 - echo branch1 submodule >bar &&
49 - git add bar &&
50 - git commit -m "Add bar on branch1" &&
51 - git checkout -b submod-branch1
52 - ) &&
53 - git add file1 "spaced name" file11 file13 file2 subdir/file3 submod &&
54 - git add both &&
55 - git rm file12 &&
56 - git commit -m "branch1 changes" &&
57 -
58 - git checkout -b stash1 master &&
59 - echo stash1 change file11 >file11 &&
60 - git add file11 &&
61 - git commit -m "stash1 changes" &&
62 -
63 - git checkout -b stash2 master &&
64 - echo stash2 change file11 >file11 &&
65 - git add file11 &&
66 - git commit -m "stash2 changes" &&
67 -
68 - git checkout master &&
69 - git submodule update -N &&
70 - echo master updated >file1 &&
71 - echo master new >file2 &&
72 - echo master updated spaced >"spaced name" &&
73 - echo master both added >both &&
74 - echo master updated file12 >file12 &&
75 - echo master updated file14 >file14 &&
76 - echo master new sub >subdir/file3 &&
77 - (
78 - cd submod &&
79 - echo master submodule >bar &&
80 - git add bar &&
81 - git commit -m "Add bar on master" &&
82 - git checkout -b submod-master
83 - ) &&
84 - git add file1 "spaced name" file12 file14 file2 subdir/file3 submod &&
85 - git add both &&
86 - git rm file11 &&
87 - git commit -m "master updates" &&
88 -
89 - git config merge.tool mytool &&
90 - git config mergetool.mytool.cmd "cat \"\$REMOTE\" >\"\$MERGED\"" &&
91 - git config mergetool.mytool.trustExitCode true &&
92 - git config mergetool.mybase.cmd "cat \"\$BASE\" >\"\$MERGED\"" &&
93 - git config mergetool.mybase.trustExitCode true
17 + git config rerere.enabled true &&
18 + echo master >file1 &&
19 + echo master spaced >"spaced name" &&
20 + echo master file11 >file11 &&
21 + echo master file12 >file12 &&
22 + echo master file13 >file13 &&
23 + echo master file14 >file14 &&
24 + mkdir subdir &&
25 + echo master sub >subdir/file3 &&
26 + test_create_repo submod &&
27 + (
28 + cd submod &&
29 + : >foo &&
30 + git add foo &&
31 + git commit -m "Add foo"
32 + ) &&
33 + git submodule add git://example.com/submod submod &&
34 + git add file1 "spaced name" file1[1-4] subdir/file3 .gitmodules submod &&
35 + git commit -m "add initial versions" &&
36 +
37 + git checkout -b branch1 master &&
38 + git submodule update -N &&
39 + echo branch1 change >file1 &&
40 + echo branch1 newfile >file2 &&
41 + echo branch1 spaced >"spaced name" &&
42 + echo branch1 both added >both &&
43 + echo branch1 change file11 >file11 &&
44 + echo branch1 change file13 >file13 &&
45 + echo branch1 sub >subdir/file3 &&
46 + (
47 + cd submod &&
48 + echo branch1 submodule >bar &&
49 + git add bar &&
50 + git commit -m "Add bar on branch1" &&
51 + git checkout -b submod-branch1
52 + ) &&
53 + git add file1 "spaced name" file11 file13 file2 subdir/file3 submod &&
54 + git add both &&
55 + git rm file12 &&
56 + git commit -m "branch1 changes" &&
57 +
58 + git checkout -b stash1 master &&
59 + echo stash1 change file11 >file11 &&
60 + git add file11 &&
61 + git commit -m "stash1 changes" &&
62 +
63 + git checkout -b stash2 master &&
64 + echo stash2 change file11 >file11 &&
65 + git add file11 &&
66 + git commit -m "stash2 changes" &&
67 +
68 + git checkout master &&
69 + git submodule update -N &&
70 + echo master updated >file1 &&
71 + echo master new >file2 &&
72 + echo master updated spaced >"spaced name" &&
73 + echo master both added >both &&
74 + echo master updated file12 >file12 &&
75 + echo master updated file14 >file14 &&
76 + echo master new sub >subdir/file3 &&
77 + (
78 + cd submod &&
79 + echo master submodule >bar &&
80 + git add bar &&
81 + git commit -m "Add bar on master" &&
82 + git checkout -b submod-master
83 + ) &&
84 + git add file1 "spaced name" file12 file14 file2 subdir/file3 submod &&
85 + git add both &&
86 + git rm file11 &&
87 + git commit -m "master updates" &&
88 +
89 + git config merge.tool mytool &&
90 + git config mergetool.mytool.cmd "cat \"\$REMOTE\" >\"\$MERGED\"" &&
91 + git config mergetool.mytool.trustExitCode true &&
92 + git config mergetool.mybase.cmd "cat \"\$BASE\" >\"\$MERGED\"" &&
93 + git config mergetool.mybase.trustExitCode true
94 '
95
96 test_expect_success 'custom mergetool' '
97 - git checkout -b test1 branch1 &&
98 - git submodule update -N &&
99 - test_must_fail git merge master >/dev/null 2>&1 &&
100 - ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
101 - ( yes "" | git mergetool file1 file1 ) &&
102 - ( yes "" | git mergetool file2 "spaced name" >/dev/null 2>&1 ) &&
103 - ( yes "" | git mergetool subdir/file3 >/dev/null 2>&1 ) &&
104 - ( yes "d" | git mergetool file11 >/dev/null 2>&1 ) &&
105 - ( yes "d" | git mergetool file12 >/dev/null 2>&1 ) &&
106 - ( yes "l" | git mergetool submod >/dev/null 2>&1 ) &&
107 - test "$(cat file1)" = "master updated" &&
108 - test "$(cat file2)" = "master new" &&
109 - test "$(cat subdir/file3)" = "master new sub" &&
110 - test "$(cat submod/bar)" = "branch1 submodule" &&
111 - git commit -m "branch1 resolved with mergetool"
97 + git checkout -b test1 branch1 &&
98 + git submodule update -N &&
99 + test_must_fail git merge master >/dev/null 2>&1 &&
100 + ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
101 + ( yes "" | git mergetool file1 file1 ) &&
102 + ( yes "" | git mergetool file2 "spaced name" >/dev/null 2>&1 ) &&
103 + ( yes "" | git mergetool subdir/file3 >/dev/null 2>&1 ) &&
104 + ( yes "d" | git mergetool file11 >/dev/null 2>&1 ) &&
105 + ( yes "d" | git mergetool file12 >/dev/null 2>&1 ) &&
106 + ( yes "l" | git mergetool submod >/dev/null 2>&1 ) &&
107 + test "$(cat file1)" = "master updated" &&
108 + test "$(cat file2)" = "master new" &&
109 + test "$(cat subdir/file3)" = "master new sub" &&
110 + test "$(cat submod/bar)" = "branch1 submodule" &&
111 + git commit -m "branch1 resolved with mergetool"
112 '
113
114 test_expect_success 'mergetool crlf' '
115 - git config core.autocrlf true &&
116 - git checkout -b test2 branch1 &&
117 - test_must_fail git merge master >/dev/null 2>&1 &&
118 - ( yes "" | git mergetool file1 >/dev/null 2>&1 ) &&
119 - ( yes "" | git mergetool file2 >/dev/null 2>&1 ) &&
120 - ( yes "" | git mergetool "spaced name" >/dev/null 2>&1 ) &&
121 - ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
122 - ( yes "" | git mergetool subdir/file3 >/dev/null 2>&1 ) &&
123 - ( yes "d" | git mergetool file11 >/dev/null 2>&1 ) &&
124 - ( yes "d" | git mergetool file12 >/dev/null 2>&1 ) &&
125 - ( yes "r" | git mergetool submod >/dev/null 2>&1 ) &&
126 - test "$(printf x | cat file1 -)" = "$(printf "master updated\r\nx")" &&
127 - test "$(printf x | cat file2 -)" = "$(printf "master new\r\nx")" &&
128 - test "$(printf x | cat subdir/file3 -)" = "$(printf "master new sub\r\nx")" &&
129 - git submodule update -N &&
130 - test "$(cat submod/bar)" = "master submodule" &&
131 - git commit -m "branch1 resolved with mergetool - autocrlf" &&
132 - git config core.autocrlf false &&
133 - git reset --hard
115 + git config core.autocrlf true &&
116 + git checkout -b test2 branch1 &&
117 + test_must_fail git merge master >/dev/null 2>&1 &&
118 + ( yes "" | git mergetool file1 >/dev/null 2>&1 ) &&
119 + ( yes "" | git mergetool file2 >/dev/null 2>&1 ) &&
120 + ( yes "" | git mergetool "spaced name" >/dev/null 2>&1 ) &&
121 + ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
122 + ( yes "" | git mergetool subdir/file3 >/dev/null 2>&1 ) &&
123 + ( yes "d" | git mergetool file11 >/dev/null 2>&1 ) &&
124 + ( yes "d" | git mergetool file12 >/dev/null 2>&1 ) &&
125 + ( yes "r" | git mergetool submod >/dev/null 2>&1 ) &&
126 + test "$(printf x | cat file1 -)" = "$(printf "master updated\r\nx")" &&
127 + test "$(printf x | cat file2 -)" = "$(printf "master new\r\nx")" &&
128 + test "$(printf x | cat subdir/file3 -)" = "$(printf "master new sub\r\nx")" &&
129 + git submodule update -N &&
130 + test "$(cat submod/bar)" = "master submodule" &&
131 + git commit -m "branch1 resolved with mergetool - autocrlf" &&
132 + git config core.autocrlf false &&
133 + git reset --hard
134 '
135
136 test_expect_success 'mergetool in subdir' '
137 - git checkout -b test3 branch1 &&
138 - git submodule update -N &&
139 - (
140 - cd subdir &&
141 - test_must_fail git merge master >/dev/null 2>&1 &&
142 - ( yes "" | git mergetool file3 >/dev/null 2>&1 ) &&
143 - test "$(cat file3)" = "master new sub"
144 - )
137 + git checkout -b test3 branch1 &&
138 + git submodule update -N &&
139 + (
140 + cd subdir &&
141 + test_must_fail git merge master >/dev/null 2>&1 &&
142 + ( yes "" | git mergetool file3 >/dev/null 2>&1 ) &&
143 + test "$(cat file3)" = "master new sub"
144 + )
145 '
146
147 test_expect_success 'mergetool on file in parent dir' '
148 - (
149 - cd subdir &&
150 - ( yes "" | git mergetool ../file1 >/dev/null 2>&1 ) &&
151 - ( yes "" | git mergetool ../file2 ../spaced\ name >/dev/null 2>&1 ) &&
152 - ( yes "" | git mergetool ../both >/dev/null 2>&1 ) &&
153 - ( yes "d" | git mergetool ../file11 >/dev/null 2>&1 ) &&
154 - ( yes "d" | git mergetool ../file12 >/dev/null 2>&1 ) &&
155 - ( yes "l" | git mergetool ../submod >/dev/null 2>&1 ) &&
156 - test "$(cat ../file1)" = "master updated" &&
157 - test "$(cat ../file2)" = "master new" &&
158 - test "$(cat ../submod/bar)" = "branch1 submodule" &&
159 - git commit -m "branch1 resolved with mergetool - subdir"
160 - )
148 + (
149 + cd subdir &&
150 + ( yes "" | git mergetool ../file1 >/dev/null 2>&1 ) &&
151 + ( yes "" | git mergetool ../file2 ../spaced\ name >/dev/null 2>&1 ) &&
152 + ( yes "" | git mergetool ../both >/dev/null 2>&1 ) &&
153 + ( yes "d" | git mergetool ../file11 >/dev/null 2>&1 ) &&
154 + ( yes "d" | git mergetool ../file12 >/dev/null 2>&1 ) &&
155 + ( yes "l" | git mergetool ../submod >/dev/null 2>&1 ) &&
156 + test "$(cat ../file1)" = "master updated" &&
157 + test "$(cat ../file2)" = "master new" &&
158 + test "$(cat ../submod/bar)" = "branch1 submodule" &&
159 + git commit -m "branch1 resolved with mergetool - subdir"
160 + )
161 '
162
163 test_expect_success 'mergetool skips autoresolved' '
164 - git checkout -b test4 branch1 &&
165 - git submodule update -N &&
166 - test_must_fail git merge master &&
167 - test -n "$(git ls-files -u)" &&
168 - ( yes "d" | git mergetool file11 >/dev/null 2>&1 ) &&
169 - ( yes "d" | git mergetool file12 >/dev/null 2>&1 ) &&
170 - ( yes "l" | git mergetool submod >/dev/null 2>&1 ) &&
171 - output="$(git mergetool --no-prompt)" &&
172 - test "$output" = "No files need merging" &&
173 - git reset --hard
164 + git checkout -b test4 branch1 &&
165 + git submodule update -N &&
166 + test_must_fail git merge master &&
167 + test -n "$(git ls-files -u)" &&
168 + ( yes "d" | git mergetool file11 >/dev/null 2>&1 ) &&
169 + ( yes "d" | git mergetool file12 >/dev/null 2>&1 ) &&
170 + ( yes "l" | git mergetool submod >/dev/null 2>&1 ) &&
171 + output="$(git mergetool --no-prompt)" &&
172 + test "$output" = "No files need merging" &&
173 + git reset --hard
174 '
175
176 test_expect_success 'mergetool merges all from subdir' '
177 - (
178 - cd subdir &&
179 - git config rerere.enabled false &&
180 - test_must_fail git merge master &&
181 - ( yes "r" | git mergetool ../submod ) &&
182 - ( yes "d" "d" | git mergetool --no-prompt ) &&
183 - test "$(cat ../file1)" = "master updated" &&
184 - test "$(cat ../file2)" = "master new" &&
185 - test "$(cat file3)" = "master new sub" &&
186 - ( cd .. && git submodule update -N ) &&
187 - test "$(cat ../submod/bar)" = "master submodule" &&
188 - git commit -m "branch2 resolved by mergetool from subdir"
189 - )
177 + (
178 + cd subdir &&
179 + git config rerere.enabled false &&
180 + test_must_fail git merge master &&
181 + ( yes "r" | git mergetool ../submod ) &&
182 + ( yes "d" "d" | git mergetool --no-prompt ) &&
183 + test "$(cat ../file1)" = "master updated" &&
184 + test "$(cat ../file2)" = "master new" &&
185 + test "$(cat file3)" = "master new sub" &&
186 + ( cd .. && git submodule update -N ) &&
187 + test "$(cat ../submod/bar)" = "master submodule" &&
188 + git commit -m "branch2 resolved by mergetool from subdir"
189 + )
190 '
191
192 test_expect_success 'mergetool skips resolved paths when rerere is active' '
193 - git config rerere.enabled true &&
194 - rm -rf .git/rr-cache &&
195 - git checkout -b test5 branch1
196 - git submodule update -N &&
197 - test_must_fail git merge master >/dev/null 2>&1 &&
198 - ( yes "l" | git mergetool --no-prompt submod >/dev/null 2>&1 ) &&
199 - ( yes "d" "d" | git mergetool --no-prompt >/dev/null 2>&1 ) &&
200 - git submodule update -N &&
201 - output="$(yes "n" | git mergetool --no-prompt)" &&
202 - test "$output" = "No files need merging" &&
203 - git reset --hard
193 + git config rerere.enabled true &&
194 + rm -rf .git/rr-cache &&
195 + git checkout -b test5 branch1
196 + git submodule update -N &&
197 + test_must_fail git merge master >/dev/null 2>&1 &&
198 + ( yes "l" | git mergetool --no-prompt submod >/dev/null 2>&1 ) &&
199 + ( yes "d" "d" | git mergetool --no-prompt >/dev/null 2>&1 ) &&
200 + git submodule update -N &&
201 + output="$(yes "n" | git mergetool --no-prompt)" &&
202 + test "$output" = "No files need merging" &&
203 + git reset --hard
204 '
205
206 test_expect_success 'conflicted stash sets up rerere' '
207 - git config rerere.enabled true &&
208 - git checkout stash1 &&
209 - echo "Conflicting stash content" >file11 &&
210 - git stash &&
211 -
212 - git checkout --detach stash2 &&
213 - test_must_fail git stash apply &&
214 -
215 - test -n "$(git ls-files -u)" &&
216 - conflicts="$(git rerere remaining)" &&
217 - test "$conflicts" = "file11" &&
218 - output="$(git mergetool --no-prompt)" &&
219 - test "$output" != "No files need merging" &&
220 -
221 - git commit -am "save the stash resolution" &&
222 -
223 - git reset --hard stash2 &&
224 - test_must_fail git stash apply &&
225 -
226 - test -n "$(git ls-files -u)" &&
227 - conflicts="$(git rerere remaining)" &&
228 - test -z "$conflicts" &&
229 - output="$(git mergetool --no-prompt)" &&
230 - test "$output" = "No files need merging"
207 + git config rerere.enabled true &&
208 + git checkout stash1 &&
209 + echo "Conflicting stash content" >file11 &&
210 + git stash &&
211 +
212 + git checkout --detach stash2 &&
213 + test_must_fail git stash apply &&
214 +
215 + test -n "$(git ls-files -u)" &&
216 + conflicts="$(git rerere remaining)" &&
217 + test "$conflicts" = "file11" &&
218 + output="$(git mergetool --no-prompt)" &&
219 + test "$output" != "No files need merging" &&
220 +
221 + git commit -am "save the stash resolution" &&
222 +
223 + git reset --hard stash2 &&
224 + test_must_fail git stash apply &&
225 +
226 + test -n "$(git ls-files -u)" &&
227 + conflicts="$(git rerere remaining)" &&
228 + test -z "$conflicts" &&
229 + output="$(git mergetool --no-prompt)" &&
230 + test "$output" = "No files need merging"
231 '
232
233 test_expect_success 'mergetool takes partial path' '
234 - git reset --hard
235 - git config rerere.enabled false &&
236 - git checkout -b test12 branch1 &&
237 - git submodule update -N &&
238 - test_must_fail git merge master &&
239 -
240 - #should not need these lines
241 - #( yes "d" | git mergetool file11 >/dev/null 2>&1 ) &&
242 - #( yes "d" | git mergetool file12 >/dev/null 2>&1 ) &&
243 - #( yes "l" | git mergetool submod >/dev/null 2>&1 ) &&
244 - #( yes "" | git mergetool file1 file2 >/dev/null 2>&1 ) &&
245 -
246 - ( yes "" | git mergetool subdir ) &&
247 -
248 - test "$(cat subdir/file3)" = "master new sub" &&
249 - git reset --hard
234 + git reset --hard
235 + git config rerere.enabled false &&
236 + git checkout -b test12 branch1 &&
237 + git submodule update -N &&
238 + test_must_fail git merge master &&
239 +
240 + #should not need these lines
241 + #( yes "d" | git mergetool file11 >/dev/null 2>&1 ) &&
242 + #( yes "d" | git mergetool file12 >/dev/null 2>&1 ) &&
243 + #( yes "l" | git mergetool submod >/dev/null 2>&1 ) &&
244 + #( yes "" | git mergetool file1 file2 >/dev/null 2>&1 ) &&
245 +
246 + ( yes "" | git mergetool subdir ) &&
247 +
248 + test "$(cat subdir/file3)" = "master new sub" &&
249 + git reset --hard
250 '
251
252 test_expect_success 'deleted vs modified submodule' '
253 - git checkout -b test6 branch1 &&
254 - git submodule update -N &&
255 - mv submod submod-movedaside &&
256 - git rm --cached submod &&
257 - git commit -m "Submodule deleted from branch" &&
258 - git checkout -b test6.a test6 &&
259 - test_must_fail git merge master &&
260 - test -n "$(git ls-files -u)" &&
261 - ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
262 - ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
263 - ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
264 - ( yes "r" | git mergetool submod ) &&
265 - rmdir submod && mv submod-movedaside submod &&
266 - test "$(cat submod/bar)" = "branch1 submodule" &&
267 - git submodule update -N &&
268 - test "$(cat submod/bar)" = "master submodule" &&
269 - output="$(git mergetool --no-prompt)" &&
270 - test "$output" = "No files need merging" &&
271 - git commit -m "Merge resolved by keeping module" &&
272 -
273 - mv submod submod-movedaside &&
274 - git checkout -b test6.b test6 &&
275 - git submodule update -N &&
276 - test_must_fail git merge master &&
277 - test -n "$(git ls-files -u)" &&
278 - ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
279 - ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
280 - ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
281 - ( yes "l" | git mergetool submod ) &&
282 - test ! -e submod &&
283 - output="$(git mergetool --no-prompt)" &&
284 - test "$output" = "No files need merging" &&
285 - git commit -m "Merge resolved by deleting module" &&
286 -
287 - mv submod-movedaside submod &&
288 - git checkout -b test6.c master &&
289 - git submodule update -N &&
290 - test_must_fail git merge test6 &&
291 - test -n "$(git ls-files -u)" &&
292 - ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
293 - ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
294 - ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
295 - ( yes "r" | git mergetool submod ) &&
296 - test ! -e submod &&
297 - test -d submod.orig &&
298 - git submodule update -N &&
299 - output="$(git mergetool --no-prompt)" &&
300 - test "$output" = "No files need merging" &&
301 - git commit -m "Merge resolved by deleting module" &&
302 - mv submod.orig submod &&
303 -
304 - git checkout -b test6.d master &&
305 - git submodule update -N &&
306 - test_must_fail git merge test6 &&
307 - test -n "$(git ls-files -u)" &&
308 - ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
309 - ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
310 - ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
311 - ( yes "l" | git mergetool submod ) &&
312 - test "$(cat submod/bar)" = "master submodule" &&
313 - git submodule update -N &&
314 - test "$(cat submod/bar)" = "master submodule" &&
315 - output="$(git mergetool --no-prompt)" &&
316 - test "$output" = "No files need merging" &&
317 - git commit -m "Merge resolved by keeping module" &&
318 - git reset --hard HEAD
253 + git checkout -b test6 branch1 &&
254 + git submodule update -N &&
255 + mv submod submod-movedaside &&
256 + git rm --cached submod &&
257 + git commit -m "Submodule deleted from branch" &&
258 + git checkout -b test6.a test6 &&
259 + test_must_fail git merge master &&
260 + test -n "$(git ls-files -u)" &&
261 + ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
262 + ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
263 + ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
264 + ( yes "r" | git mergetool submod ) &&
265 + rmdir submod && mv submod-movedaside submod &&
266 + test "$(cat submod/bar)" = "branch1 submodule" &&
267 + git submodule update -N &&
268 + test "$(cat submod/bar)" = "master submodule" &&
269 + output="$(git mergetool --no-prompt)" &&
270 + test "$output" = "No files need merging" &&
271 + git commit -m "Merge resolved by keeping module" &&
272 +
273 + mv submod submod-movedaside &&
274 + git checkout -b test6.b test6 &&
275 + git submodule update -N &&
276 + test_must_fail git merge master &&
277 + test -n "$(git ls-files -u)" &&
278 + ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
279 + ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
280 + ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
281 + ( yes "l" | git mergetool submod ) &&
282 + test ! -e submod &&
283 + output="$(git mergetool --no-prompt)" &&
284 + test "$output" = "No files need merging" &&
285 + git commit -m "Merge resolved by deleting module" &&
286 +
287 + mv submod-movedaside submod &&
288 + git checkout -b test6.c master &&
289 + git submodule update -N &&
290 + test_must_fail git merge test6 &&
291 + test -n "$(git ls-files -u)" &&
292 + ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
293 + ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
294 + ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
295 + ( yes "r" | git mergetool submod ) &&
296 + test ! -e submod &&
297 + test -d submod.orig &&
298 + git submodule update -N &&
299 + output="$(git mergetool --no-prompt)" &&
300 + test "$output" = "No files need merging" &&
301 + git commit -m "Merge resolved by deleting module" &&
302 + mv submod.orig submod &&
303 +
304 + git checkout -b test6.d master &&
305 + git submodule update -N &&
306 + test_must_fail git merge test6 &&
307 + test -n "$(git ls-files -u)" &&
308 + ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
309 + ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
310 + ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
311 + ( yes "l" | git mergetool submod ) &&
312 + test "$(cat submod/bar)" = "master submodule" &&
313 + git submodule update -N &&
314 + test "$(cat submod/bar)" = "master submodule" &&
315 + output="$(git mergetool --no-prompt)" &&
316 + test "$output" = "No files need merging" &&
317 + git commit -m "Merge resolved by keeping module" &&
318 + git reset --hard HEAD
319 '
320
321 test_expect_success 'file vs modified submodule' '
322 - git checkout -b test7 branch1 &&
323 - git submodule update -N &&
324 - mv submod submod-movedaside &&
325 - git rm --cached submod &&
326 - echo not a submodule >submod &&
327 - git add submod &&
328 - git commit -m "Submodule path becomes file" &&
329 - git checkout -b test7.a branch1 &&
330 - test_must_fail git merge master &&
331 - test -n "$(git ls-files -u)" &&
332 - ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
333 - ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
334 - ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
335 - ( yes "r" | git mergetool submod ) &&
336 - rmdir submod && mv submod-movedaside submod &&
337 - test "$(cat submod/bar)" = "branch1 submodule" &&
338 - git submodule update -N &&
339 - test "$(cat submod/bar)" = "master submodule" &&
340 - output="$(git mergetool --no-prompt)" &&
341 - test "$output" = "No files need merging" &&
342 - git commit -m "Merge resolved by keeping module" &&
343 -
344 - mv submod submod-movedaside &&
345 - git checkout -b test7.b test7 &&
346 - test_must_fail git merge master &&
347 - test -n "$(git ls-files -u)" &&
348 - ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
349 - ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
350 - ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
351 - ( yes "l" | git mergetool submod ) &&
352 - git submodule update -N &&
353 - test "$(cat submod)" = "not a submodule" &&
354 - output="$(git mergetool --no-prompt)" &&
355 - test "$output" = "No files need merging" &&
356 - git commit -m "Merge resolved by keeping file" &&
357 -
358 - git checkout -b test7.c master &&
359 - rmdir submod && mv submod-movedaside submod &&
360 - test ! -e submod.orig &&
361 - git submodule update -N &&
362 - test_must_fail git merge test7 &&
363 - test -n "$(git ls-files -u)" &&
364 - ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
365 - ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
366 - ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
367 - ( yes "r" | git mergetool submod ) &&
368 - test -d submod.orig &&
369 - git submodule update -N &&
370 - test "$(cat submod)" = "not a submodule" &&
371 - output="$(git mergetool --no-prompt)" &&
372 - test "$output" = "No files need merging" &&
373 - git commit -m "Merge resolved by keeping file" &&
374 -
375 - git checkout -b test7.d master &&
376 - rmdir submod && mv submod.orig submod &&
377 - git submodule update -N &&
378 - test_must_fail git merge test7 &&
379 - test -n "$(git ls-files -u)" &&
380 - ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
381 - ( yes "" | git mergetool both>/dev/null 2>&1 ) &&
382 - ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
383 - ( yes "l" | git mergetool submod ) &&
384 - test "$(cat submod/bar)" = "master submodule" &&
385 - git submodule update -N &&
386 - test "$(cat submod/bar)" = "master submodule" &&
387 - output="$(git mergetool --no-prompt)" &&
388 - test "$output" = "No files need merging" &&
389 - git commit -m "Merge resolved by keeping module"
322 + git checkout -b test7 branch1 &&
323 + git submodule update -N &&
324 + mv submod submod-movedaside &&
325 + git rm --cached submod &&
326 + echo not a submodule >submod &&
327 + git add submod &&
328 + git commit -m "Submodule path becomes file" &&
329 + git checkout -b test7.a branch1 &&
330 + test_must_fail git merge master &&
331 + test -n "$(git ls-files -u)" &&
332 + ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
333 + ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
334 + ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
335 + ( yes "r" | git mergetool submod ) &&
336 + rmdir submod && mv submod-movedaside submod &&
337 + test "$(cat submod/bar)" = "branch1 submodule" &&
338 + git submodule update -N &&
339 + test "$(cat submod/bar)" = "master submodule" &&
340 + output="$(git mergetool --no-prompt)" &&
341 + test "$output" = "No files need merging" &&
342 + git commit -m "Merge resolved by keeping module" &&
343 +
344 + mv submod submod-movedaside &&
345 + git checkout -b test7.b test7 &&
346 + test_must_fail git merge master &&
347 + test -n "$(git ls-files -u)" &&
348 + ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
349 + ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
350 + ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
351 + ( yes "l" | git mergetool submod ) &&
352 + git submodule update -N &&
353 + test "$(cat submod)" = "not a submodule" &&
354 + output="$(git mergetool --no-prompt)" &&
355 + test "$output" = "No files need merging" &&
356 + git commit -m "Merge resolved by keeping file" &&
357 +
358 + git checkout -b test7.c master &&
359 + rmdir submod && mv submod-movedaside submod &&
360 + test ! -e submod.orig &&
361 + git submodule update -N &&
362 + test_must_fail git merge test7 &&
363 + test -n "$(git ls-files -u)" &&
364 + ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
365 + ( yes "" | git mergetool both >/dev/null 2>&1 ) &&
366 + ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
367 + ( yes "r" | git mergetool submod ) &&
368 + test -d submod.orig &&
369 + git submodule update -N &&
370 + test "$(cat submod)" = "not a submodule" &&
371 + output="$(git mergetool --no-prompt)" &&
372 + test "$output" = "No files need merging" &&
373 + git commit -m "Merge resolved by keeping file" &&
374 +
375 + git checkout -b test7.d master &&
376 + rmdir submod && mv submod.orig submod &&
377 + git submodule update -N &&
378 + test_must_fail git merge test7 &&
379 + test -n "$(git ls-files -u)" &&
380 + ( yes "" | git mergetool file1 file2 spaced\ name subdir/file3 >/dev/null 2>&1 ) &&
381 + ( yes "" | git mergetool both>/dev/null 2>&1 ) &&
382 + ( yes "d" | git mergetool file11 file12 >/dev/null 2>&1 ) &&
383 + ( yes "l" | git mergetool submod ) &&
384 + test "$(cat submod/bar)" = "master submodule" &&
385 + git submodule update -N &&
386 + test "$(cat submod/bar)" = "master submodule" &&
387 + output="$(git mergetool --no-prompt)" &&
388 + test "$output" = "No files need merging" &&
389 + git commit -m "Merge resolved by keeping module"
390 '
391
392 test_expect_success 'submodule in subdirectory' '
393 - git checkout -b test10 branch1 &&
394 - git submodule update -N &&
395 - (
396 - cd subdir &&
397 - test_create_repo subdir_module &&
393 + git checkout -b test10 branch1 &&
394 + git submodule update -N &&
395 + (
396 + cd subdir &&
397 + test_create_repo subdir_module &&
398 + (
399 + cd subdir_module &&
400 + : >file15 &&
401 + git add file15 &&
402 + git commit -m "add initial versions"
403 + )
404 + ) &&
405 + git submodule add git://example.com/subsubmodule subdir/subdir_module &&
406 + git add subdir/subdir_module &&
407 + git commit -m "add submodule in subdirectory" &&
408 +
409 + git checkout -b test10.a test10 &&
410 + git submodule update -N &&
411 (
399 - cd subdir_module &&
400 - : >file15 &&
401 - git add file15 &&
402 - git commit -m "add initial versions"
403 - )
404 - ) &&
405 - git submodule add git://example.com/subsubmodule subdir/subdir_module &&
406 - git add subdir/subdir_module &&
407 - git commit -m "add submodule in subdirectory" &&
408 -
409 - git checkout -b test10.a test10 &&
410 - git submodule update -N &&
411 - (
412 - cd subdir/subdir_module &&
413 - git checkout -b super10.a &&
414 - echo test10.a >file15 &&
415 - git add file15 &&
416 - git commit -m "on branch 10.a"
417 - ) &&
418 - git add subdir/subdir_module &&
419 - git commit -m "change submodule in subdirectory on test10.a" &&
420 -
421 - git checkout -b test10.b test10 &&
422 - git submodule update -N &&
423 - (
412 cd subdir/subdir_module &&
425 - git checkout -b super10.b &&
426 - echo test10.b >file15 &&
427 - git add file15 &&
428 - git commit -m "on branch 10.b"
429 - ) &&
430 - git add subdir/subdir_module &&
431 - git commit -m "change submodule in subdirectory on test10.b" &&
432 -
433 - test_must_fail git merge test10.a >/dev/null 2>&1 &&
434 - (
435 - cd subdir &&
436 - ( yes "l" | git mergetool subdir_module )
437 - ) &&
438 - test "$(cat subdir/subdir_module/file15)" = "test10.b" &&
439 - git submodule update -N &&
440 - test "$(cat subdir/subdir_module/file15)" = "test10.b" &&
441 - git reset --hard &&
442 - git submodule update -N &&
443 -
444 - test_must_fail git merge test10.a >/dev/null 2>&1 &&
445 - ( yes "r" | git mergetool subdir/subdir_module ) &&
446 - test "$(cat subdir/subdir_module/file15)" = "test10.b" &&
447 - git submodule update -N &&
448 - test "$(cat subdir/subdir_module/file15)" = "test10.a" &&
449 - git commit -m "branch1 resolved with mergetool" &&
450 - rm -rf subdir/subdir_module
413 + git checkout -b super10.a &&
414 + echo test10.a >file15 &&
415 + git add file15 &&
416 + git commit -m "on branch 10.a"
417 + ) &&
418 + git add subdir/subdir_module &&
419 + git commit -m "change submodule in subdirectory on test10.a" &&
420 +
421 + git checkout -b test10.b test10 &&
422 + git submodule update -N &&
423 + (
424 + cd subdir/subdir_module &&
425 + git checkout -b super10.b &&
426 + echo test10.b >file15 &&
427 + git add file15 &&
428 + git commit -m "on branch 10.b"
429 + ) &&
430 + git add subdir/subdir_module &&
431 + git commit -m "change submodule in subdirectory on test10.b" &&
432 +
433 + test_must_fail git merge test10.a >/dev/null 2>&1 &&
434 + (
435 + cd subdir &&
436 + ( yes "l" | git mergetool subdir_module )
437 + ) &&
438 + test "$(cat subdir/subdir_module/file15)" = "test10.b" &&
439 + git submodule update -N &&
440 + test "$(cat subdir/subdir_module/file15)" = "test10.b" &&
441 + git reset --hard &&
442 + git submodule update -N &&
443 +
444 + test_must_fail git merge test10.a >/dev/null 2>&1 &&
445 + ( yes "r" | git mergetool subdir/subdir_module ) &&
446 + test "$(cat subdir/subdir_module/file15)" = "test10.b" &&
447 + git submodule update -N &&
448 + test "$(cat subdir/subdir_module/file15)" = "test10.a" &&
449 + git commit -m "branch1 resolved with mergetool" &&
450 + rm -rf subdir/subdir_module
451 '
452
453 test_expect_success 'directory vs modified submodule' '
454 - git checkout -b test11 branch1 &&
455 - mv submod submod-movedaside &&
456 - git rm --cached submod &&
457 - mkdir submod &&
458 - echo not a submodule >submod/file16 &&
459 - git add submod/file16 &&
460 - git commit -m "Submodule path becomes directory" &&
461 -
462 - test_must_fail git merge master &&
463 - test -n "$(git ls-files -u)" &&
464 - ( yes "l" | git mergetool submod ) &&
465 - test "$(cat submod/file16)" = "not a submodule" &&
466 - rm -rf submod.orig &&
467 -
468 - git reset --hard >/dev/null 2>&1 &&
469 - test_must_fail git merge master &&
470 - test -n "$(git ls-files -u)" &&
471 - test ! -e submod.orig &&
472 - ( yes "r" | git mergetool submod ) &&
473 - test -d submod.orig &&
474 - test "$(cat submod.orig/file16)" = "not a submodule" &&
475 - rm -r submod.orig &&
476 - mv submod-movedaside/.git submod &&
477 - ( cd submod && git clean -f && git reset --hard ) &&
478 - git submodule update -N &&
479 - test "$(cat submod/bar)" = "master submodule" &&
480 - git reset --hard >/dev/null 2>&1 && rm -rf submod-movedaside &&
481 -
482 - git checkout -b test11.c master &&
483 - git submodule update -N &&
484 - test_must_fail git merge test11 &&
485 - test -n "$(git ls-files -u)" &&
486 - ( yes "l" | git mergetool submod ) &&
487 - git submodule update -N &&
488 - test "$(cat submod/bar)" = "master submodule" &&
489 -
490 - git reset --hard >/dev/null 2>&1 &&
491 - git submodule update -N &&
492 - test_must_fail git merge test11 &&
493 - test -n "$(git ls-files -u)" &&
494 - test ! -e submod.orig &&
495 - ( yes "r" | git mergetool submod ) &&
496 - test "$(cat submod/file16)" = "not a submodule" &&
497 -
498 - git reset --hard master >/dev/null 2>&1 &&
499 - ( cd submod && git clean -f && git reset --hard ) &&
500 - git submodule update -N
454 + git checkout -b test11 branch1 &&
455 + mv submod submod-movedaside &&
456 + git rm --cached submod &&
457 + mkdir submod &&
458 + echo not a submodule >submod/file16 &&
459 + git add submod/file16 &&
460 + git commit -m "Submodule path becomes directory" &&
461 +
462 + test_must_fail git merge master &&
463 + test -n "$(git ls-files -u)" &&
464 + ( yes "l" | git mergetool submod ) &&
465 + test "$(cat submod/file16)" = "not a submodule" &&
466 + rm -rf submod.orig &&
467 +
468 + git reset --hard >/dev/null 2>&1 &&
469 + test_must_fail git merge master &&
470 + test -n "$(git ls-files -u)" &&
471 + test ! -e submod.orig &&
472 + ( yes "r" | git mergetool submod ) &&
473 + test -d submod.orig &&
474 + test "$(cat submod.orig/file16)" = "not a submodule" &&
475 + rm -r submod.orig &&
476 + mv submod-movedaside/.git submod &&
477 + ( cd submod && git clean -f && git reset --hard ) &&
478 + git submodule update -N &&
479 + test "$(cat submod/bar)" = "master submodule" &&
480 + git reset --hard >/dev/null 2>&1 && rm -rf submod-movedaside &&
481 +
482 + git checkout -b test11.c master &&
483 + git submodule update -N &&
484 + test_must_fail git merge test11 &&
485 + test -n "$(git ls-files -u)" &&
486 + ( yes "l" | git mergetool submod ) &&
487 + git submodule update -N &&
488 + test "$(cat submod/bar)" = "master submodule" &&
489 +
490 + git reset --hard >/dev/null 2>&1 &&
491 + git submodule update -N &&
492 + test_must_fail git merge test11 &&
493 + test -n "$(git ls-files -u)" &&
494 + test ! -e submod.orig &&
495 + ( yes "r" | git mergetool submod ) &&
496 + test "$(cat submod/file16)" = "not a submodule" &&
497 +
498 + git reset --hard master >/dev/null 2>&1 &&
499 + ( cd submod && git clean -f && git reset --hard ) &&
500 + git submodule update -N
501 '
502
503 test_expect_success 'file with no base' '
504 - git checkout -b test13 branch1 &&
505 - test_must_fail git merge master &&
506 - git mergetool --no-prompt --tool mybase -- both &&
507 - >expected &&
508 - test_cmp both expected &&
509 - git reset --hard master >/dev/null 2>&1
504 + git checkout -b test13 branch1 &&
505 + test_must_fail git merge master &&
506 + git mergetool --no-prompt --tool mybase -- both &&
507 + >expected &&
508 + test_cmp both expected &&
509 + git reset --hard master >/dev/null 2>&1
510 '
511
512 test_expect_success 'custom commands override built-ins' '
513 - git checkout -b test14 branch1 &&
514 - git config mergetool.defaults.cmd "cat \"\$REMOTE\" >\"\$MERGED\"" &&
515 - git config mergetool.defaults.trustExitCode true &&
516 - test_must_fail git merge master &&
517 - git mergetool --no-prompt --tool defaults -- both &&
518 - echo master both added >expected &&
519 - test_cmp both expected &&
520 - git config --unset mergetool.defaults.cmd &&
521 - git config --unset mergetool.defaults.trustExitCode &&
522 - git reset --hard master >/dev/null 2>&1
513 + git checkout -b test14 branch1 &&
514 + git config mergetool.defaults.cmd "cat \"\$REMOTE\" >\"\$MERGED\"" &&
515 + git config mergetool.defaults.trustExitCode true &&
516 + test_must_fail git merge master &&
517 + git mergetool --no-prompt --tool defaults -- both &&
518 + echo master both added >expected &&
519 + test_cmp both expected &&
520 + git config --unset mergetool.defaults.cmd &&
521 + git config --unset mergetool.defaults.trustExitCode &&
522 + git reset --hard master >/dev/null 2>&1
523 '
524
525 test_done