mercurial/simplemerge.py
changeset 48559 b5e1283c0475
parent 48558 2dbee604a4f0
child 48560 6ad70879d2bd
equal deleted inserted replaced
48558:2dbee604a4f0 48559:b5e1283c0475
   339     for i, override in enumerate(overrides):
   339     for i, override in enumerate(overrides):
   340         result[i] = override
   340         result[i] = override
   341     return result
   341     return result
   342 
   342 
   343 
   343 
       
   344 def _detect_newline(m3):
       
   345     if len(m3.a) > 0:
       
   346         if m3.a[0].endswith(b'\r\n'):
       
   347             return b'\r\n'
       
   348         elif m3.a[0].endswith(b'\r'):
       
   349             return b'\r'
       
   350     return b'\n'
       
   351 
       
   352 
   344 def render_markers(
   353 def render_markers(
   345     m3,
   354     m3,
   346     name_a=None,
   355     name_a=None,
   347     name_b=None,
   356     name_b=None,
   348     name_base=None,
   357     name_base=None,
   351     end_marker=b'>>>>>>>',
   360     end_marker=b'>>>>>>>',
   352     base_marker=None,
   361     base_marker=None,
   353     minimize=False,
   362     minimize=False,
   354 ):
   363 ):
   355     """Return merge in cvs-like form."""
   364     """Return merge in cvs-like form."""
       
   365     newline = _detect_newline(m3)
   356     conflicts = False
   366     conflicts = False
   357     newline = b'\n'
       
   358     if len(m3.a) > 0:
       
   359         if m3.a[0].endswith(b'\r\n'):
       
   360             newline = b'\r\n'
       
   361         elif m3.a[0].endswith(b'\r'):
       
   362             newline = b'\r'
       
   363     if name_a and start_marker:
   367     if name_a and start_marker:
   364         start_marker = start_marker + b' ' + name_a
   368         start_marker = start_marker + b' ' + name_a
   365     if name_b and end_marker:
   369     if name_b and end_marker:
   366         end_marker = end_marker + b' ' + name_b
   370         end_marker = end_marker + b' ' + name_b
   367     if name_base and base_marker:
   371     if name_base and base_marker:
   389             lines.extend(group_lines)
   393             lines.extend(group_lines)
   390     return lines, conflicts
   394     return lines, conflicts
   391 
   395 
   392 
   396 
   393 def render_mergediff(m3, name_a, name_b, name_base):
   397 def render_mergediff(m3, name_a, name_b, name_base):
       
   398     newline = _detect_newline(m3)
   394     lines = []
   399     lines = []
   395     conflicts = False
   400     conflicts = False
   396     for what, group_lines in m3.merge_groups():
   401     for what, group_lines in m3.merge_groups():
   397         if what == b'conflict':
   402         if what == b'conflict':
   398             base_lines, a_lines, b_lines = group_lines
   403             base_lines, a_lines, b_lines = group_lines
   430                         for line in lines1[block[0] : block[1]]:
   435                         for line in lines1[block[0] : block[1]]:
   431                             yield b'-' + line
   436                             yield b'-' + line
   432                         for line in lines2[block[2] : block[3]]:
   437                         for line in lines2[block[2] : block[3]]:
   433                             yield b'+' + line
   438                             yield b'+' + line
   434 
   439 
   435             lines.append(b"<<<<<<<\n")
   440             lines.append(b"<<<<<<<" + newline)
   436             if matching_lines(a_blocks) < matching_lines(b_blocks):
   441             if matching_lines(a_blocks) < matching_lines(b_blocks):
   437                 lines.append(b"======= %s\n" % name_a)
   442                 lines.append(b"======= " + name_a + newline)
   438                 lines.extend(a_lines)
   443                 lines.extend(a_lines)
   439                 lines.append(b"------- %s\n" % name_base)
   444                 lines.append(b"------- " + name_base + newline)
   440                 lines.append(b"+++++++ %s\n" % name_b)
   445                 lines.append(b"+++++++ " + name_b + newline)
   441                 lines.extend(diff_lines(b_blocks, base_lines, b_lines))
   446                 lines.extend(diff_lines(b_blocks, base_lines, b_lines))
   442             else:
   447             else:
   443                 lines.append(b"------- %s\n" % name_base)
   448                 lines.append(b"------- " + name_base + newline)
   444                 lines.append(b"+++++++ %s\n" % name_a)
   449                 lines.append(b"+++++++ " + name_a + newline)
   445                 lines.extend(diff_lines(a_blocks, base_lines, a_lines))
   450                 lines.extend(diff_lines(a_blocks, base_lines, a_lines))
   446                 lines.append(b"======= %s\n" % name_b)
   451                 lines.append(b"======= " + name_b + newline)
   447                 lines.extend(b_lines)
   452                 lines.extend(b_lines)
   448             lines.append(b">>>>>>>\n")
   453             lines.append(b">>>>>>>" + newline)
   449             conflicts = True
   454             conflicts = True
   450         else:
   455         else:
   451             lines.extend(group_lines)
   456             lines.extend(group_lines)
   452     return lines, conflicts
   457     return lines, conflicts
   453 
   458