comparison mercurial/filemerge.py @ 48583:c91418480cb0

simplemerge: use 3-way markers if mode=='merge3', ignoring number of labels Before this patch, we use a combination of `mode` and `labels` to decide which marker style to use. That's mostly my own fault because I was the one who added the `mergediff` as a "mode" instead of adding a separate argument for marker style. Still, let's make these arguments more orthogonal by ignoring the number of labels when deciding which marker style to use. This refactoring makes it a little clearer in the simplemerge *extension* that passing more than 2 `--label` arguments changes the marker style. Differential Revision: https://phab.mercurial-scm.org/D11972
author Martin von Zweigbergk <martinvonz@google.com>
date Tue, 14 Dec 2021 13:12:56 -0800
parents 5151b0f6519e
children 1a84758b4fca
comparison
equal deleted inserted replaced
48582:0dc698c91ca0 48583:c91418480cb0
419 _(b"%s.premerge not valid ('%s' is neither boolean nor %s)") 419 _(b"%s.premerge not valid ('%s' is neither boolean nor %s)")
420 % (tool, premerge, _valid) 420 % (tool, premerge, _valid)
421 ) 421 )
422 422
423 if premerge: 423 if premerge:
424 if not labels:
425 labels = _defaultconflictlabels
426 if len(labels) < 3:
427 labels.append(b'base')
424 mode = b'merge' 428 mode = b'merge'
425 if premerge in {b'keep-merge3', b'keep-mergediff'}: 429 if premerge == b'keep-mergediff':
426 if not labels: 430 mode = b'mergediff'
427 labels = _defaultconflictlabels 431 elif premerge == b'keep-merge3':
428 if len(labels) < 3: 432 mode = b'merge3'
429 labels.append(b'base')
430 if premerge == b'keep-mergediff':
431 mode = b'mergediff'
432 r = simplemerge.simplemerge( 433 r = simplemerge.simplemerge(
433 ui, fcd, fca, fco, quiet=True, label=labels, mode=mode 434 ui, fcd, fca, fco, quiet=True, label=labels, mode=mode
434 ) 435 )
435 if not r: 436 if not r:
436 ui.debug(b" premerge successful\n") 437 ui.debug(b" premerge successful\n")
530 side of the merge and one for the base content.""" 531 side of the merge and one for the base content."""
531 if not labels: 532 if not labels:
532 labels = _defaultconflictlabels 533 labels = _defaultconflictlabels
533 if len(labels) < 3: 534 if len(labels) < 3:
534 labels.append(b'base') 535 labels.append(b'base')
535 return _imerge(repo, mynode, fcd, fco, fca, toolconf, backup, labels) 536 return _merge(
537 repo, mynode, fcd, fco, fca, toolconf, backup, labels, b'merge3'
538 )
536 539
537 540
538 @internaltool( 541 @internaltool(
539 b'merge3-lie-about-conflicts', 542 b'merge3-lie-about-conflicts',
540 fullmerge, 543 fullmerge,