##// END OF EJS Templates
tests: test findexe() access check fixed in 58f96703a9ab
Mads Kiilerich -
r15545:2607de60 default
parent child Browse files
Show More
@@ -1,746 +1,772 b''
1 $ "$TESTDIR/hghave" system-sh || exit 80
1 $ "$TESTDIR/hghave" system-sh || exit 80
2
2
3 test merge-tools configuration - mostly exercising filemerge.py
3 test merge-tools configuration - mostly exercising filemerge.py
4
4
5 $ unset HGMERGE # make sure HGMERGE doesn't interfere with the test
5 $ unset HGMERGE # make sure HGMERGE doesn't interfere with the test
6 $ hg init
6 $ hg init
7
7
8 revision 0
8 revision 0
9
9
10 $ echo "revision 0" > f
10 $ echo "revision 0" > f
11 $ echo "space" >> f
11 $ echo "space" >> f
12 $ hg commit -Am "revision 0"
12 $ hg commit -Am "revision 0"
13 adding f
13 adding f
14
14
15 revision 1
15 revision 1
16
16
17 $ echo "revision 1" > f
17 $ echo "revision 1" > f
18 $ echo "space" >> f
18 $ echo "space" >> f
19 $ hg commit -Am "revision 1"
19 $ hg commit -Am "revision 1"
20 $ hg update 0 > /dev/null
20 $ hg update 0 > /dev/null
21
21
22 revision 2
22 revision 2
23
23
24 $ echo "revision 2" > f
24 $ echo "revision 2" > f
25 $ echo "space" >> f
25 $ echo "space" >> f
26 $ hg commit -Am "revision 2"
26 $ hg commit -Am "revision 2"
27 created new head
27 created new head
28 $ hg update 0 > /dev/null
28 $ hg update 0 > /dev/null
29
29
30 revision 3 - simple to merge
30 revision 3 - simple to merge
31
31
32 $ echo "revision 3" >> f
32 $ echo "revision 3" >> f
33 $ hg commit -Am "revision 3"
33 $ hg commit -Am "revision 3"
34 created new head
34 created new head
35 $ echo "[merge-tools]" > .hg/hgrc
35 $ echo "[merge-tools]" > .hg/hgrc
36
36
37 $ beforemerge() {
37 $ beforemerge() {
38 > cat .hg/hgrc
38 > cat .hg/hgrc
39 > echo "# hg update -C 1"
39 > echo "# hg update -C 1"
40 > hg update -C 1 > /dev/null
40 > hg update -C 1 > /dev/null
41 > }
41 > }
42 $ aftermerge() {
42 $ aftermerge() {
43 > echo "# cat f"
43 > echo "# cat f"
44 > cat f
44 > cat f
45 > echo "# hg stat"
45 > echo "# hg stat"
46 > hg stat
46 > hg stat
47 > rm -f f.orig
47 > rm -f f.orig
48 > }
48 > }
49 $ domerge() {
49 $ domerge() {
50 > beforemerge
50 > beforemerge
51 > echo "# hg merge $*"
51 > echo "# hg merge $*"
52 > hg merge $*
52 > hg merge $*
53 > aftermerge
53 > aftermerge
54 > }
54 > }
55
55
56 Tool selection
56 Tool selection
57
57
58 default is internal merge:
58 default is internal merge:
59
59
60 $ beforemerge
60 $ beforemerge
61 [merge-tools]
61 [merge-tools]
62 # hg update -C 1
62 # hg update -C 1
63
63
64 hg merge -r 2
64 hg merge -r 2
65 override $PATH to ensure hgmerge not visible; use $PYTHON in case we're
65 override $PATH to ensure hgmerge not visible; use $PYTHON in case we're
66 running from a devel copy, not a temp installation
66 running from a devel copy, not a temp installation
67
67
68 $ PATH="$BINDIR" $PYTHON "$BINDIR"/hg merge -r 2
68 $ PATH="$BINDIR" $PYTHON "$BINDIR"/hg merge -r 2
69 merging f
69 merging f
70 warning: conflicts during merge.
70 warning: conflicts during merge.
71 merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
71 merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
72 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
72 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
73 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
73 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
74 [1]
74 [1]
75 $ aftermerge
75 $ aftermerge
76 # cat f
76 # cat f
77 <<<<<<< local
77 <<<<<<< local
78 revision 1
78 revision 1
79 =======
79 =======
80 revision 2
80 revision 2
81 >>>>>>> other
81 >>>>>>> other
82 space
82 space
83 # hg stat
83 # hg stat
84 M f
84 M f
85 ? f.orig
85 ? f.orig
86
86
87 simplest hgrc using false for merge:
87 simplest hgrc using false for merge:
88
88
89 $ echo "false.whatever=" >> .hg/hgrc
89 $ echo "false.whatever=" >> .hg/hgrc
90 $ domerge -r 2
90 $ domerge -r 2
91 [merge-tools]
91 [merge-tools]
92 false.whatever=
92 false.whatever=
93 # hg update -C 1
93 # hg update -C 1
94 # hg merge -r 2
94 # hg merge -r 2
95 merging f
95 merging f
96 merging f failed!
96 merging f failed!
97 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
97 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
98 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
98 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
99 # cat f
99 # cat f
100 revision 1
100 revision 1
101 space
101 space
102 # hg stat
102 # hg stat
103 M f
103 M f
104 ? f.orig
104 ? f.orig
105
105
106 unexecutable file in $PATH shouldn't be found:
107
108 $ touch false
109 $ hg up -qC 1
110 $ PATH="`pwd`:$BINDIR" $PYTHON "$BINDIR"/hg merge -r 2
111 merging f
112 warning: conflicts during merge.
113 merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
114 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
115 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
116 [1]
117 $ rm false
118
119 executable directory in $PATH shouldn't be found:
120
121 $ mkdir false
122 $ hg up -qC 1
123 $ PATH="`pwd`:$BINDIR" $PYTHON "$BINDIR"/hg merge -r 2
124 merging f
125 warning: conflicts during merge.
126 merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
127 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
128 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
129 [1]
130 $ rmdir false
131
106 true with higher .priority gets precedence:
132 true with higher .priority gets precedence:
107
133
108 $ echo "true.priority=1" >> .hg/hgrc
134 $ echo "true.priority=1" >> .hg/hgrc
109 $ domerge -r 2
135 $ domerge -r 2
110 [merge-tools]
136 [merge-tools]
111 false.whatever=
137 false.whatever=
112 true.priority=1
138 true.priority=1
113 # hg update -C 1
139 # hg update -C 1
114 # hg merge -r 2
140 # hg merge -r 2
115 merging f
141 merging f
116 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
142 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
117 (branch merge, don't forget to commit)
143 (branch merge, don't forget to commit)
118 # cat f
144 # cat f
119 revision 1
145 revision 1
120 space
146 space
121 # hg stat
147 # hg stat
122 M f
148 M f
123
149
124 unless lowered on command line:
150 unless lowered on command line:
125
151
126 $ domerge -r 2 --config merge-tools.true.priority=-7
152 $ domerge -r 2 --config merge-tools.true.priority=-7
127 [merge-tools]
153 [merge-tools]
128 false.whatever=
154 false.whatever=
129 true.priority=1
155 true.priority=1
130 # hg update -C 1
156 # hg update -C 1
131 # hg merge -r 2 --config merge-tools.true.priority=-7
157 # hg merge -r 2 --config merge-tools.true.priority=-7
132 merging f
158 merging f
133 merging f failed!
159 merging f failed!
134 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
160 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
135 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
161 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
136 # cat f
162 # cat f
137 revision 1
163 revision 1
138 space
164 space
139 # hg stat
165 # hg stat
140 M f
166 M f
141 ? f.orig
167 ? f.orig
142
168
143 or false set higher on command line:
169 or false set higher on command line:
144
170
145 $ domerge -r 2 --config merge-tools.false.priority=117
171 $ domerge -r 2 --config merge-tools.false.priority=117
146 [merge-tools]
172 [merge-tools]
147 false.whatever=
173 false.whatever=
148 true.priority=1
174 true.priority=1
149 # hg update -C 1
175 # hg update -C 1
150 # hg merge -r 2 --config merge-tools.false.priority=117
176 # hg merge -r 2 --config merge-tools.false.priority=117
151 merging f
177 merging f
152 merging f failed!
178 merging f failed!
153 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
179 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
154 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
180 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
155 # cat f
181 # cat f
156 revision 1
182 revision 1
157 space
183 space
158 # hg stat
184 # hg stat
159 M f
185 M f
160 ? f.orig
186 ? f.orig
161
187
162 or true.executable not found in PATH:
188 or true.executable not found in PATH:
163
189
164 $ domerge -r 2 --config merge-tools.true.executable=nonexistingmergetool
190 $ domerge -r 2 --config merge-tools.true.executable=nonexistingmergetool
165 [merge-tools]
191 [merge-tools]
166 false.whatever=
192 false.whatever=
167 true.priority=1
193 true.priority=1
168 # hg update -C 1
194 # hg update -C 1
169 # hg merge -r 2 --config merge-tools.true.executable=nonexistingmergetool
195 # hg merge -r 2 --config merge-tools.true.executable=nonexistingmergetool
170 merging f
196 merging f
171 merging f failed!
197 merging f failed!
172 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
198 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
173 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
199 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
174 # cat f
200 # cat f
175 revision 1
201 revision 1
176 space
202 space
177 # hg stat
203 # hg stat
178 M f
204 M f
179 ? f.orig
205 ? f.orig
180
206
181 or true.executable with bogus path:
207 or true.executable with bogus path:
182
208
183 $ domerge -r 2 --config merge-tools.true.executable=/nonexisting/mergetool
209 $ domerge -r 2 --config merge-tools.true.executable=/nonexisting/mergetool
184 [merge-tools]
210 [merge-tools]
185 false.whatever=
211 false.whatever=
186 true.priority=1
212 true.priority=1
187 # hg update -C 1
213 # hg update -C 1
188 # hg merge -r 2 --config merge-tools.true.executable=/nonexisting/mergetool
214 # hg merge -r 2 --config merge-tools.true.executable=/nonexisting/mergetool
189 merging f
215 merging f
190 merging f failed!
216 merging f failed!
191 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
217 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
192 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
218 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
193 # cat f
219 # cat f
194 revision 1
220 revision 1
195 space
221 space
196 # hg stat
222 # hg stat
197 M f
223 M f
198 ? f.orig
224 ? f.orig
199
225
200 but true.executable set to cat found in PATH works:
226 but true.executable set to cat found in PATH works:
201
227
202 $ echo "true.executable=cat" >> .hg/hgrc
228 $ echo "true.executable=cat" >> .hg/hgrc
203 $ domerge -r 2
229 $ domerge -r 2
204 [merge-tools]
230 [merge-tools]
205 false.whatever=
231 false.whatever=
206 true.priority=1
232 true.priority=1
207 true.executable=cat
233 true.executable=cat
208 # hg update -C 1
234 # hg update -C 1
209 # hg merge -r 2
235 # hg merge -r 2
210 merging f
236 merging f
211 revision 1
237 revision 1
212 space
238 space
213 revision 0
239 revision 0
214 space
240 space
215 revision 2
241 revision 2
216 space
242 space
217 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
243 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
218 (branch merge, don't forget to commit)
244 (branch merge, don't forget to commit)
219 # cat f
245 # cat f
220 revision 1
246 revision 1
221 space
247 space
222 # hg stat
248 # hg stat
223 M f
249 M f
224
250
225 and true.executable set to cat with path works:
251 and true.executable set to cat with path works:
226
252
227 $ domerge -r 2 --config merge-tools.true.executable=cat
253 $ domerge -r 2 --config merge-tools.true.executable=cat
228 [merge-tools]
254 [merge-tools]
229 false.whatever=
255 false.whatever=
230 true.priority=1
256 true.priority=1
231 true.executable=cat
257 true.executable=cat
232 # hg update -C 1
258 # hg update -C 1
233 # hg merge -r 2 --config merge-tools.true.executable=cat
259 # hg merge -r 2 --config merge-tools.true.executable=cat
234 merging f
260 merging f
235 revision 1
261 revision 1
236 space
262 space
237 revision 0
263 revision 0
238 space
264 space
239 revision 2
265 revision 2
240 space
266 space
241 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
267 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
242 (branch merge, don't forget to commit)
268 (branch merge, don't forget to commit)
243 # cat f
269 # cat f
244 revision 1
270 revision 1
245 space
271 space
246 # hg stat
272 # hg stat
247 M f
273 M f
248
274
249 environment variables in true.executable are handled:
275 environment variables in true.executable are handled:
250
276
251 $ cat > $HGTMP/merge.sh <<EOF
277 $ cat > $HGTMP/merge.sh <<EOF
252 > #!/bin/sh
278 > #!/bin/sh
253 > echo 'custom merge tool'
279 > echo 'custom merge tool'
254 > EOF
280 > EOF
255 $ chmod +x $HGTMP/merge.sh
281 $ chmod +x $HGTMP/merge.sh
256 $ domerge -r 2 --config merge-tools.true.executable='$HGTMP/merge.sh'
282 $ domerge -r 2 --config merge-tools.true.executable='$HGTMP/merge.sh'
257 [merge-tools]
283 [merge-tools]
258 false.whatever=
284 false.whatever=
259 true.priority=1
285 true.priority=1
260 true.executable=cat
286 true.executable=cat
261 # hg update -C 1
287 # hg update -C 1
262 # hg merge -r 2 --config merge-tools.true.executable=$HGTMP/merge.sh
288 # hg merge -r 2 --config merge-tools.true.executable=$HGTMP/merge.sh
263 merging f
289 merging f
264 custom merge tool
290 custom merge tool
265 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
291 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
266 (branch merge, don't forget to commit)
292 (branch merge, don't forget to commit)
267 # cat f
293 # cat f
268 revision 1
294 revision 1
269 space
295 space
270 # hg stat
296 # hg stat
271 M f
297 M f
272
298
273 Tool selection and merge-patterns
299 Tool selection and merge-patterns
274
300
275 merge-patterns specifies new tool false:
301 merge-patterns specifies new tool false:
276
302
277 $ domerge -r 2 --config merge-patterns.f=false
303 $ domerge -r 2 --config merge-patterns.f=false
278 [merge-tools]
304 [merge-tools]
279 false.whatever=
305 false.whatever=
280 true.priority=1
306 true.priority=1
281 true.executable=cat
307 true.executable=cat
282 # hg update -C 1
308 # hg update -C 1
283 # hg merge -r 2 --config merge-patterns.f=false
309 # hg merge -r 2 --config merge-patterns.f=false
284 merging f
310 merging f
285 merging f failed!
311 merging f failed!
286 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
312 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
287 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
313 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
288 # cat f
314 # cat f
289 revision 1
315 revision 1
290 space
316 space
291 # hg stat
317 # hg stat
292 M f
318 M f
293 ? f.orig
319 ? f.orig
294
320
295 merge-patterns specifies executable not found in PATH and gets warning:
321 merge-patterns specifies executable not found in PATH and gets warning:
296
322
297 $ domerge -r 2 --config merge-patterns.f=true --config merge-tools.true.executable=nonexistingmergetool
323 $ domerge -r 2 --config merge-patterns.f=true --config merge-tools.true.executable=nonexistingmergetool
298 [merge-tools]
324 [merge-tools]
299 false.whatever=
325 false.whatever=
300 true.priority=1
326 true.priority=1
301 true.executable=cat
327 true.executable=cat
302 # hg update -C 1
328 # hg update -C 1
303 # hg merge -r 2 --config merge-patterns.f=true --config merge-tools.true.executable=nonexistingmergetool
329 # hg merge -r 2 --config merge-patterns.f=true --config merge-tools.true.executable=nonexistingmergetool
304 couldn't find merge tool true specified for f
330 couldn't find merge tool true specified for f
305 merging f
331 merging f
306 merging f failed!
332 merging f failed!
307 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
333 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
308 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
334 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
309 # cat f
335 # cat f
310 revision 1
336 revision 1
311 space
337 space
312 # hg stat
338 # hg stat
313 M f
339 M f
314 ? f.orig
340 ? f.orig
315
341
316 merge-patterns specifies executable with bogus path and gets warning:
342 merge-patterns specifies executable with bogus path and gets warning:
317
343
318 $ domerge -r 2 --config merge-patterns.f=true --config merge-tools.true.executable=/nonexisting/mergetool
344 $ domerge -r 2 --config merge-patterns.f=true --config merge-tools.true.executable=/nonexisting/mergetool
319 [merge-tools]
345 [merge-tools]
320 false.whatever=
346 false.whatever=
321 true.priority=1
347 true.priority=1
322 true.executable=cat
348 true.executable=cat
323 # hg update -C 1
349 # hg update -C 1
324 # hg merge -r 2 --config merge-patterns.f=true --config merge-tools.true.executable=/nonexisting/mergetool
350 # hg merge -r 2 --config merge-patterns.f=true --config merge-tools.true.executable=/nonexisting/mergetool
325 couldn't find merge tool true specified for f
351 couldn't find merge tool true specified for f
326 merging f
352 merging f
327 merging f failed!
353 merging f failed!
328 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
354 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
329 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
355 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
330 # cat f
356 # cat f
331 revision 1
357 revision 1
332 space
358 space
333 # hg stat
359 # hg stat
334 M f
360 M f
335 ? f.orig
361 ? f.orig
336
362
337 ui.merge overrules priority
363 ui.merge overrules priority
338
364
339 ui.merge specifies false:
365 ui.merge specifies false:
340
366
341 $ domerge -r 2 --config ui.merge=false
367 $ domerge -r 2 --config ui.merge=false
342 [merge-tools]
368 [merge-tools]
343 false.whatever=
369 false.whatever=
344 true.priority=1
370 true.priority=1
345 true.executable=cat
371 true.executable=cat
346 # hg update -C 1
372 # hg update -C 1
347 # hg merge -r 2 --config ui.merge=false
373 # hg merge -r 2 --config ui.merge=false
348 merging f
374 merging f
349 merging f failed!
375 merging f failed!
350 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
376 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
351 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
377 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
352 # cat f
378 # cat f
353 revision 1
379 revision 1
354 space
380 space
355 # hg stat
381 # hg stat
356 M f
382 M f
357 ? f.orig
383 ? f.orig
358
384
359 ui.merge specifies internal:fail:
385 ui.merge specifies internal:fail:
360
386
361 $ domerge -r 2 --config ui.merge=internal:fail
387 $ domerge -r 2 --config ui.merge=internal:fail
362 [merge-tools]
388 [merge-tools]
363 false.whatever=
389 false.whatever=
364 true.priority=1
390 true.priority=1
365 true.executable=cat
391 true.executable=cat
366 # hg update -C 1
392 # hg update -C 1
367 # hg merge -r 2 --config ui.merge=internal:fail
393 # hg merge -r 2 --config ui.merge=internal:fail
368 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
394 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
369 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
395 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
370 # cat f
396 # cat f
371 revision 1
397 revision 1
372 space
398 space
373 # hg stat
399 # hg stat
374 M f
400 M f
375
401
376 ui.merge specifies internal:local:
402 ui.merge specifies internal:local:
377
403
378 $ domerge -r 2 --config ui.merge=internal:local
404 $ domerge -r 2 --config ui.merge=internal:local
379 [merge-tools]
405 [merge-tools]
380 false.whatever=
406 false.whatever=
381 true.priority=1
407 true.priority=1
382 true.executable=cat
408 true.executable=cat
383 # hg update -C 1
409 # hg update -C 1
384 # hg merge -r 2 --config ui.merge=internal:local
410 # hg merge -r 2 --config ui.merge=internal:local
385 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
411 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
386 (branch merge, don't forget to commit)
412 (branch merge, don't forget to commit)
387 # cat f
413 # cat f
388 revision 1
414 revision 1
389 space
415 space
390 # hg stat
416 # hg stat
391 M f
417 M f
392
418
393 ui.merge specifies internal:other:
419 ui.merge specifies internal:other:
394
420
395 $ domerge -r 2 --config ui.merge=internal:other
421 $ domerge -r 2 --config ui.merge=internal:other
396 [merge-tools]
422 [merge-tools]
397 false.whatever=
423 false.whatever=
398 true.priority=1
424 true.priority=1
399 true.executable=cat
425 true.executable=cat
400 # hg update -C 1
426 # hg update -C 1
401 # hg merge -r 2 --config ui.merge=internal:other
427 # hg merge -r 2 --config ui.merge=internal:other
402 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
428 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
403 (branch merge, don't forget to commit)
429 (branch merge, don't forget to commit)
404 # cat f
430 # cat f
405 revision 2
431 revision 2
406 space
432 space
407 # hg stat
433 # hg stat
408 M f
434 M f
409
435
410 ui.merge specifies internal:prompt:
436 ui.merge specifies internal:prompt:
411
437
412 $ domerge -r 2 --config ui.merge=internal:prompt
438 $ domerge -r 2 --config ui.merge=internal:prompt
413 [merge-tools]
439 [merge-tools]
414 false.whatever=
440 false.whatever=
415 true.priority=1
441 true.priority=1
416 true.executable=cat
442 true.executable=cat
417 # hg update -C 1
443 # hg update -C 1
418 # hg merge -r 2 --config ui.merge=internal:prompt
444 # hg merge -r 2 --config ui.merge=internal:prompt
419 no tool found to merge f
445 no tool found to merge f
420 keep (l)ocal or take (o)ther? l
446 keep (l)ocal or take (o)ther? l
421 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
447 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
422 (branch merge, don't forget to commit)
448 (branch merge, don't forget to commit)
423 # cat f
449 # cat f
424 revision 1
450 revision 1
425 space
451 space
426 # hg stat
452 # hg stat
427 M f
453 M f
428
454
429 ui.merge specifies internal:dump:
455 ui.merge specifies internal:dump:
430
456
431 $ domerge -r 2 --config ui.merge=internal:dump
457 $ domerge -r 2 --config ui.merge=internal:dump
432 [merge-tools]
458 [merge-tools]
433 false.whatever=
459 false.whatever=
434 true.priority=1
460 true.priority=1
435 true.executable=cat
461 true.executable=cat
436 # hg update -C 1
462 # hg update -C 1
437 # hg merge -r 2 --config ui.merge=internal:dump
463 # hg merge -r 2 --config ui.merge=internal:dump
438 merging f
464 merging f
439 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
465 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
440 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
466 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
441 # cat f
467 # cat f
442 revision 1
468 revision 1
443 space
469 space
444 # hg stat
470 # hg stat
445 M f
471 M f
446 ? f.base
472 ? f.base
447 ? f.local
473 ? f.local
448 ? f.orig
474 ? f.orig
449 ? f.other
475 ? f.other
450
476
451 f.base:
477 f.base:
452
478
453 $ cat f.base
479 $ cat f.base
454 revision 0
480 revision 0
455 space
481 space
456
482
457 f.local:
483 f.local:
458
484
459 $ cat f.local
485 $ cat f.local
460 revision 1
486 revision 1
461 space
487 space
462
488
463 f.other:
489 f.other:
464
490
465 $ cat f.other
491 $ cat f.other
466 revision 2
492 revision 2
467 space
493 space
468 $ rm f.base f.local f.other
494 $ rm f.base f.local f.other
469
495
470 ui.merge specifies internal:other but is overruled by pattern for false:
496 ui.merge specifies internal:other but is overruled by pattern for false:
471
497
472 $ domerge -r 2 --config ui.merge=internal:other --config merge-patterns.f=false
498 $ domerge -r 2 --config ui.merge=internal:other --config merge-patterns.f=false
473 [merge-tools]
499 [merge-tools]
474 false.whatever=
500 false.whatever=
475 true.priority=1
501 true.priority=1
476 true.executable=cat
502 true.executable=cat
477 # hg update -C 1
503 # hg update -C 1
478 # hg merge -r 2 --config ui.merge=internal:other --config merge-patterns.f=false
504 # hg merge -r 2 --config ui.merge=internal:other --config merge-patterns.f=false
479 merging f
505 merging f
480 merging f failed!
506 merging f failed!
481 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
507 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
482 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
508 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
483 # cat f
509 # cat f
484 revision 1
510 revision 1
485 space
511 space
486 # hg stat
512 # hg stat
487 M f
513 M f
488 ? f.orig
514 ? f.orig
489
515
490 Premerge
516 Premerge
491
517
492 ui.merge specifies internal:other but is overruled by --tool=false
518 ui.merge specifies internal:other but is overruled by --tool=false
493
519
494 $ domerge -r 2 --config ui.merge=internal:other --tool=false
520 $ domerge -r 2 --config ui.merge=internal:other --tool=false
495 [merge-tools]
521 [merge-tools]
496 false.whatever=
522 false.whatever=
497 true.priority=1
523 true.priority=1
498 true.executable=cat
524 true.executable=cat
499 # hg update -C 1
525 # hg update -C 1
500 # hg merge -r 2 --config ui.merge=internal:other --tool=false
526 # hg merge -r 2 --config ui.merge=internal:other --tool=false
501 merging f
527 merging f
502 merging f failed!
528 merging f failed!
503 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
529 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
504 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
530 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
505 # cat f
531 # cat f
506 revision 1
532 revision 1
507 space
533 space
508 # hg stat
534 # hg stat
509 M f
535 M f
510 ? f.orig
536 ? f.orig
511
537
512 HGMERGE specifies internal:other but is overruled by --tool=false
538 HGMERGE specifies internal:other but is overruled by --tool=false
513
539
514 $ HGMERGE=internal:other ; export HGMERGE
540 $ HGMERGE=internal:other ; export HGMERGE
515 $ domerge -r 2 --tool=false
541 $ domerge -r 2 --tool=false
516 [merge-tools]
542 [merge-tools]
517 false.whatever=
543 false.whatever=
518 true.priority=1
544 true.priority=1
519 true.executable=cat
545 true.executable=cat
520 # hg update -C 1
546 # hg update -C 1
521 # hg merge -r 2 --tool=false
547 # hg merge -r 2 --tool=false
522 merging f
548 merging f
523 merging f failed!
549 merging f failed!
524 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
550 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
525 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
551 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
526 # cat f
552 # cat f
527 revision 1
553 revision 1
528 space
554 space
529 # hg stat
555 # hg stat
530 M f
556 M f
531 ? f.orig
557 ? f.orig
532
558
533 $ unset HGMERGE # make sure HGMERGE doesn't interfere with remaining tests
559 $ unset HGMERGE # make sure HGMERGE doesn't interfere with remaining tests
534
560
535 Default is silent simplemerge:
561 Default is silent simplemerge:
536
562
537 $ domerge -r 3
563 $ domerge -r 3
538 [merge-tools]
564 [merge-tools]
539 false.whatever=
565 false.whatever=
540 true.priority=1
566 true.priority=1
541 true.executable=cat
567 true.executable=cat
542 # hg update -C 1
568 # hg update -C 1
543 # hg merge -r 3
569 # hg merge -r 3
544 merging f
570 merging f
545 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
571 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
546 (branch merge, don't forget to commit)
572 (branch merge, don't forget to commit)
547 # cat f
573 # cat f
548 revision 1
574 revision 1
549 space
575 space
550 revision 3
576 revision 3
551 # hg stat
577 # hg stat
552 M f
578 M f
553
579
554 .premerge=True is same:
580 .premerge=True is same:
555
581
556 $ domerge -r 3 --config merge-tools.true.premerge=True
582 $ domerge -r 3 --config merge-tools.true.premerge=True
557 [merge-tools]
583 [merge-tools]
558 false.whatever=
584 false.whatever=
559 true.priority=1
585 true.priority=1
560 true.executable=cat
586 true.executable=cat
561 # hg update -C 1
587 # hg update -C 1
562 # hg merge -r 3 --config merge-tools.true.premerge=True
588 # hg merge -r 3 --config merge-tools.true.premerge=True
563 merging f
589 merging f
564 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
590 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
565 (branch merge, don't forget to commit)
591 (branch merge, don't forget to commit)
566 # cat f
592 # cat f
567 revision 1
593 revision 1
568 space
594 space
569 revision 3
595 revision 3
570 # hg stat
596 # hg stat
571 M f
597 M f
572
598
573 .premerge=False executes merge-tool:
599 .premerge=False executes merge-tool:
574
600
575 $ domerge -r 3 --config merge-tools.true.premerge=False
601 $ domerge -r 3 --config merge-tools.true.premerge=False
576 [merge-tools]
602 [merge-tools]
577 false.whatever=
603 false.whatever=
578 true.priority=1
604 true.priority=1
579 true.executable=cat
605 true.executable=cat
580 # hg update -C 1
606 # hg update -C 1
581 # hg merge -r 3 --config merge-tools.true.premerge=False
607 # hg merge -r 3 --config merge-tools.true.premerge=False
582 merging f
608 merging f
583 revision 1
609 revision 1
584 space
610 space
585 revision 0
611 revision 0
586 space
612 space
587 revision 0
613 revision 0
588 space
614 space
589 revision 3
615 revision 3
590 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
616 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
591 (branch merge, don't forget to commit)
617 (branch merge, don't forget to commit)
592 # cat f
618 # cat f
593 revision 1
619 revision 1
594 space
620 space
595 # hg stat
621 # hg stat
596 M f
622 M f
597
623
598 Tool execution
624 Tool execution
599
625
600 set tools.args explicit to include $base $local $other $output:
626 set tools.args explicit to include $base $local $other $output:
601
627
602 $ beforemerge
628 $ beforemerge
603 [merge-tools]
629 [merge-tools]
604 false.whatever=
630 false.whatever=
605 true.priority=1
631 true.priority=1
606 true.executable=cat
632 true.executable=cat
607 # hg update -C 1
633 # hg update -C 1
608 $ hg merge -r 2 --config merge-tools.true.executable=head --config merge-tools.true.args='$base $local $other $output' \
634 $ hg merge -r 2 --config merge-tools.true.executable=head --config merge-tools.true.args='$base $local $other $output' \
609 > | sed 's,==> .* <==,==> ... <==,g'
635 > | sed 's,==> .* <==,==> ... <==,g'
610 merging f
636 merging f
611 ==> ... <==
637 ==> ... <==
612 revision 0
638 revision 0
613 space
639 space
614
640
615 ==> ... <==
641 ==> ... <==
616 revision 1
642 revision 1
617 space
643 space
618
644
619 ==> ... <==
645 ==> ... <==
620 revision 2
646 revision 2
621 space
647 space
622
648
623 ==> ... <==
649 ==> ... <==
624 revision 1
650 revision 1
625 space
651 space
626 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
652 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
627 (branch merge, don't forget to commit)
653 (branch merge, don't forget to commit)
628 $ aftermerge
654 $ aftermerge
629 # cat f
655 # cat f
630 revision 1
656 revision 1
631 space
657 space
632 # hg stat
658 # hg stat
633 M f
659 M f
634
660
635 Merge with "echo mergeresult > $local":
661 Merge with "echo mergeresult > $local":
636
662
637 $ beforemerge
663 $ beforemerge
638 [merge-tools]
664 [merge-tools]
639 false.whatever=
665 false.whatever=
640 true.priority=1
666 true.priority=1
641 true.executable=cat
667 true.executable=cat
642 # hg update -C 1
668 # hg update -C 1
643 $ hg merge -r 2 --config merge-tools.true.executable=echo --config merge-tools.true.args='mergeresult > $local'
669 $ hg merge -r 2 --config merge-tools.true.executable=echo --config merge-tools.true.args='mergeresult > $local'
644 merging f
670 merging f
645 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
671 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
646 (branch merge, don't forget to commit)
672 (branch merge, don't forget to commit)
647 $ aftermerge
673 $ aftermerge
648 # cat f
674 # cat f
649 mergeresult
675 mergeresult
650 # hg stat
676 # hg stat
651 M f
677 M f
652
678
653 - and $local is the file f:
679 - and $local is the file f:
654
680
655 $ beforemerge
681 $ beforemerge
656 [merge-tools]
682 [merge-tools]
657 false.whatever=
683 false.whatever=
658 true.priority=1
684 true.priority=1
659 true.executable=cat
685 true.executable=cat
660 # hg update -C 1
686 # hg update -C 1
661 $ hg merge -r 2 --config merge-tools.true.executable=echo --config merge-tools.true.args='mergeresult > f'
687 $ hg merge -r 2 --config merge-tools.true.executable=echo --config merge-tools.true.args='mergeresult > f'
662 merging f
688 merging f
663 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
689 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
664 (branch merge, don't forget to commit)
690 (branch merge, don't forget to commit)
665 $ aftermerge
691 $ aftermerge
666 # cat f
692 # cat f
667 mergeresult
693 mergeresult
668 # hg stat
694 # hg stat
669 M f
695 M f
670
696
671 Merge with "echo mergeresult > $output" - the variable is a bit magic:
697 Merge with "echo mergeresult > $output" - the variable is a bit magic:
672
698
673 $ beforemerge
699 $ beforemerge
674 [merge-tools]
700 [merge-tools]
675 false.whatever=
701 false.whatever=
676 true.priority=1
702 true.priority=1
677 true.executable=cat
703 true.executable=cat
678 # hg update -C 1
704 # hg update -C 1
679 $ hg merge -r 2 --config merge-tools.true.executable=echo --config merge-tools.true.args='mergeresult > $output'
705 $ hg merge -r 2 --config merge-tools.true.executable=echo --config merge-tools.true.args='mergeresult > $output'
680 merging f
706 merging f
681 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
707 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
682 (branch merge, don't forget to commit)
708 (branch merge, don't forget to commit)
683 $ aftermerge
709 $ aftermerge
684 # cat f
710 # cat f
685 mergeresult
711 mergeresult
686 # hg stat
712 # hg stat
687 M f
713 M f
688
714
689 Merge using tool with a path that must be quoted:
715 Merge using tool with a path that must be quoted:
690
716
691 $ beforemerge
717 $ beforemerge
692 [merge-tools]
718 [merge-tools]
693 false.whatever=
719 false.whatever=
694 true.priority=1
720 true.priority=1
695 true.executable=cat
721 true.executable=cat
696 # hg update -C 1
722 # hg update -C 1
697 $ cat <<EOF > 'my merge tool'
723 $ cat <<EOF > 'my merge tool'
698 > #!/bin/sh
724 > #!/bin/sh
699 > cat "\$1" "\$2" "\$3" > "\$4"
725 > cat "\$1" "\$2" "\$3" > "\$4"
700 > EOF
726 > EOF
701 $ chmod +x 'my merge tool'
727 $ chmod +x 'my merge tool'
702 $ hg merge -r 2 --config merge-tools.true.executable='./my merge tool' --config merge-tools.true.args='$base $local $other $output'
728 $ hg merge -r 2 --config merge-tools.true.executable='./my merge tool' --config merge-tools.true.args='$base $local $other $output'
703 merging f
729 merging f
704 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
730 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
705 (branch merge, don't forget to commit)
731 (branch merge, don't forget to commit)
706 $ rm -f 'my merge tool'
732 $ rm -f 'my merge tool'
707 $ aftermerge
733 $ aftermerge
708 # cat f
734 # cat f
709 revision 0
735 revision 0
710 space
736 space
711 revision 1
737 revision 1
712 space
738 space
713 revision 2
739 revision 2
714 space
740 space
715 # hg stat
741 # hg stat
716 M f
742 M f
717
743
718 Merge post-processing
744 Merge post-processing
719
745
720 cat is a bad merge-tool and doesn't change:
746 cat is a bad merge-tool and doesn't change:
721
747
722 $ domerge -y -r 2 --config merge-tools.true.checkchanged=1
748 $ domerge -y -r 2 --config merge-tools.true.checkchanged=1
723 [merge-tools]
749 [merge-tools]
724 false.whatever=
750 false.whatever=
725 true.priority=1
751 true.priority=1
726 true.executable=cat
752 true.executable=cat
727 # hg update -C 1
753 # hg update -C 1
728 # hg merge -y -r 2 --config merge-tools.true.checkchanged=1
754 # hg merge -y -r 2 --config merge-tools.true.checkchanged=1
729 merging f
755 merging f
730 revision 1
756 revision 1
731 space
757 space
732 revision 0
758 revision 0
733 space
759 space
734 revision 2
760 revision 2
735 space
761 space
736 output file f appears unchanged
762 output file f appears unchanged
737 was merge successful (yn)? n
763 was merge successful (yn)? n
738 merging f failed!
764 merging f failed!
739 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
765 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
740 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
766 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
741 # cat f
767 # cat f
742 revision 1
768 revision 1
743 space
769 space
744 # hg stat
770 # hg stat
745 M f
771 M f
746 ? f.orig
772 ? f.orig
General Comments 0
You need to be logged in to leave comments. Login now