comparison mercurial/filemerge.py @ 46139:3ca5ca380a34

filemerge: add support for the new "mergediff" marker style to premerge This adds support for the new "mergediff" conflict marker style to "merge-tools.<tool>.premerge" (the new value is called "keep-mergediff"). Differential Revision: https://phab.mercurial-scm.org/D9606
author Martin von Zweigbergk <martinvonz@google.com>
date Mon, 14 Dec 2020 18:09:37 -0800
parents bdc2bf68f19e
children 0c95b59a89f1
comparison
equal deleted inserted replaced
46138:34f2c634c8f6 46139:3ca5ca380a34
406 return 1 406 return 1
407 unused, unused, unused, back = files 407 unused, unused, unused, back = files
408 408
409 ui = repo.ui 409 ui = repo.ui
410 410
411 validkeep = [b'keep', b'keep-merge3'] 411 validkeep = [b'keep', b'keep-merge3', b'keep-mergediff']
412 412
413 # do we attempt to simplemerge first? 413 # do we attempt to simplemerge first?
414 try: 414 try:
415 premerge = _toolbool(ui, tool, b"premerge", not binary) 415 premerge = _toolbool(ui, tool, b"premerge", not binary)
416 except error.ConfigError: 416 except error.ConfigError:
421 _(b"%s.premerge not valid ('%s' is neither boolean nor %s)") 421 _(b"%s.premerge not valid ('%s' is neither boolean nor %s)")
422 % (tool, premerge, _valid) 422 % (tool, premerge, _valid)
423 ) 423 )
424 424
425 if premerge: 425 if premerge:
426 if premerge == b'keep-merge3': 426 mode = b'merge'
427 if premerge in {b'keep-merge3', b'keep-mergediff'}:
427 if not labels: 428 if not labels:
428 labels = _defaultconflictlabels 429 labels = _defaultconflictlabels
429 if len(labels) < 3: 430 if len(labels) < 3:
430 labels.append(b'base') 431 labels.append(b'base')
431 r = simplemerge.simplemerge(ui, fcd, fca, fco, quiet=True, label=labels) 432 if premerge == b'keep-mergediff':
433 mode = b'mergediff'
434 r = simplemerge.simplemerge(
435 ui, fcd, fca, fco, quiet=True, label=labels, mode=mode
436 )
432 if not r: 437 if not r:
433 ui.debug(b" premerge successful\n") 438 ui.debug(b" premerge successful\n")
434 return 0 439 return 0
435 if premerge not in validkeep: 440 if premerge not in validkeep:
436 # restore from backup and try again 441 # restore from backup and try again