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