348 elif m3.a[0].endswith(b'\r'): |
348 elif m3.a[0].endswith(b'\r'): |
349 return b'\r' |
349 return b'\r' |
350 return b'\n' |
350 return b'\n' |
351 |
351 |
352 |
352 |
353 def render_markers( |
353 def render_minimized( |
354 m3, |
354 m3, |
355 name_a=None, |
355 name_a=None, |
356 name_b=None, |
356 name_b=None, |
357 start_marker=b'<<<<<<<', |
357 start_marker=b'<<<<<<<', |
358 mid_marker=b'=======', |
358 mid_marker=b'=======', |
359 end_marker=b'>>>>>>>', |
359 end_marker=b'>>>>>>>', |
360 minimize=False, |
|
361 ): |
360 ): |
362 """Return merge in cvs-like form.""" |
361 """Return merge in cvs-like form.""" |
363 newline = _detect_newline(m3) |
362 newline = _detect_newline(m3) |
364 conflicts = False |
363 conflicts = False |
365 if name_a and start_marker: |
364 if name_a: |
366 start_marker = start_marker + b' ' + name_a |
365 start_marker = start_marker + b' ' + name_a |
367 if name_b and end_marker: |
366 if name_b: |
368 end_marker = end_marker + b' ' + name_b |
367 end_marker = end_marker + b' ' + name_b |
369 merge_groups = m3.merge_groups() |
368 merge_groups = m3.merge_groups() |
370 if minimize: |
369 merge_groups = m3.minimize(merge_groups) |
371 merge_groups = m3.minimize(merge_groups) |
|
372 lines = [] |
370 lines = [] |
373 for what, group_lines in merge_groups: |
371 for what, group_lines in merge_groups: |
374 if what == b'conflict': |
372 if what == b'conflict': |
375 base_lines, a_lines, b_lines = group_lines |
373 base_lines, a_lines, b_lines = group_lines |
376 conflicts = True |
374 conflicts = True |
377 if start_marker is not None: |
375 lines.append(start_marker + newline) |
378 lines.append(start_marker + newline) |
|
379 lines.extend(a_lines) |
376 lines.extend(a_lines) |
380 if mid_marker is not None: |
377 lines.append(mid_marker + newline) |
381 lines.append(mid_marker + newline) |
|
382 lines.extend(b_lines) |
378 lines.extend(b_lines) |
383 if end_marker is not None: |
379 lines.append(end_marker + newline) |
384 lines.append(end_marker + newline) |
|
385 else: |
380 else: |
386 lines.extend(group_lines) |
381 lines.extend(group_lines) |
387 return lines, conflicts |
382 return lines, conflicts |
388 |
383 |
389 |
384 |
520 if mode == b'mergediff': |
515 if mode == b'mergediff': |
521 lines, conflicts = render_mergediff(m3, name_a, name_b, name_base) |
516 lines, conflicts = render_mergediff(m3, name_a, name_b, name_base) |
522 elif mode == b'merge3': |
517 elif mode == b'merge3': |
523 lines, conflicts = render_merge3(m3, name_a, name_b, name_base) |
518 lines, conflicts = render_merge3(m3, name_a, name_b, name_base) |
524 else: |
519 else: |
525 extrakwargs = { |
520 lines, conflicts = render_minimized(m3, name_a, name_b) |
526 'minimize': True, |
|
527 } |
|
528 lines, conflicts = render_markers( |
|
529 m3, name_a=name_a, name_b=name_b, **extrakwargs |
|
530 ) |
|
531 |
521 |
532 mergedtext = b''.join(lines) |
522 mergedtext = b''.join(lines) |
533 if opts.get('print'): |
523 if opts.get('print'): |
534 ui.fout.write(mergedtext) |
524 ui.fout.write(mergedtext) |
535 else: |
525 else: |