mercurial/simplemerge.py
changeset 48514 fb691fa90807
parent 48509 5151b0f6519e
child 48515 bd27dad294b7
equal deleted inserted replaced
48513:47f2a82ae3e4 48514:fb691fa90807
   482         else:
   482         else:
   483             lines.extend(group[1])
   483             lines.extend(group[1])
   484     return lines, conflicts
   484     return lines, conflicts
   485 
   485 
   486 
   486 
       
   487 def _resolve(m3, sides):
       
   488     lines = []
       
   489     for group in m3.merge_groups():
       
   490         if group[0] == b'conflict':
       
   491             for side in sides:
       
   492                 lines.extend(group[side + 1])
       
   493         else:
       
   494             lines.extend(group[1])
       
   495     return lines
       
   496 
       
   497 
   487 def simplemerge(ui, localctx, basectx, otherctx, **opts):
   498 def simplemerge(ui, localctx, basectx, otherctx, **opts):
   488     """Performs the simplemerge algorithm.
   499     """Performs the simplemerge algorithm.
   489 
   500 
   490     The merged result is written into `localctx`.
   501     The merged result is written into `localctx`.
   491     """
   502     """
   513         othertext = readctx(otherctx)
   524         othertext = readctx(otherctx)
   514     except error.Abort:
   525     except error.Abort:
   515         return 1
   526         return 1
   516 
   527 
   517     m3 = Merge3Text(basetext, localtext, othertext)
   528     m3 = Merge3Text(basetext, localtext, othertext)
   518     extrakwargs = {
   529     conflicts = False
   519         "localorother": None,
       
   520         'minimize': True,
       
   521     }
       
   522     if mode == b'union':
   530     if mode == b'union':
   523         extrakwargs['start_marker'] = None
   531         lines = _resolve(m3, (1, 2))
   524         extrakwargs['mid_marker'] = None
       
   525         extrakwargs['end_marker'] = None
       
   526     elif mode == b'local':
   532     elif mode == b'local':
   527         extrakwargs['localorother'] = b'local'
   533         lines = _resolve(m3, (1,))
   528     elif mode == b'other':
   534     elif mode == b'other':
   529         extrakwargs['localorother'] = b'other'
   535         lines = _resolve(m3, (2,))
   530     elif name_base is not None:
   536     elif mode == b'mergediff':
   531         extrakwargs['base_marker'] = b'|||||||'
       
   532         extrakwargs['name_base'] = name_base
       
   533         extrakwargs['minimize'] = False
       
   534 
       
   535     if mode == b'mergediff':
       
   536         lines, conflicts = _mergediff(m3, name_a, name_b, name_base)
   537         lines, conflicts = _mergediff(m3, name_a, name_b, name_base)
   537     else:
   538     else:
       
   539         extrakwargs = {
       
   540             'minimize': True,
       
   541         }
       
   542         if name_base is not None:
       
   543             extrakwargs['base_marker'] = b'|||||||'
       
   544             extrakwargs['name_base'] = name_base
       
   545             extrakwargs['minimize'] = False
   538         lines = list(
   546         lines = list(
   539             m3.merge_lines(name_a=name_a, name_b=name_b, **extrakwargs)
   547             m3.merge_lines(name_a=name_a, name_b=name_b, **extrakwargs)
   540         )
   548         )
   541         conflicts = m3.conflicts and not mode == b'union'
   549         conflicts = m3.conflicts
   542 
   550 
   543     mergedtext = b''.join(lines)
   551     mergedtext = b''.join(lines)
   544     if opts.get('print'):
   552     if opts.get('print'):
   545         ui.fout.write(mergedtext)
   553         ui.fout.write(mergedtext)
   546     else:
   554     else: