automerge: fix basediff() and rename it to render_mergediff2()

Summary: since we move the automerge logic into `merge_groups()` function, now we can use `basediff` in smerge_benchmark.py. This diff fix the `basediff` and rename it to `render_mergediff2()` (two difffs) since it's similar to `render_mergediff()` (one diff)

Reviewed By: quark-zju

Differential Revision: D48866236

fbshipit-source-id: fdb31428830c7074a07248c62a0faa404bd5859a
This commit is contained in:
Zhaolong Zhu 2023-08-31 12:52:34 -07:00 committed by Facebook GitHub Bot
parent f8bc9d775a
commit e146abcca5
2 changed files with 14 additions and 19 deletions

View File

@ -9,7 +9,7 @@ from typing import List, Optional
from edenscm import commands, error, mdiff, registrar, scmutil
from edenscm.i18n import _
from edenscm.simplemerge import Merge3Text, render_markers, render_merge3, wordmergemode
from edenscm.simplemerge import Merge3Text, render_markers, wordmergemode
cmdtable = {}
command = registrar.command(cmdtable)
@ -133,7 +133,7 @@ def debugsmerge(ui, repo, *args, **opts):
desttext, srctext, basetext = [readfile(p) for p in args]
m3 = SmartMerge3Text(basetext, desttext, srctext)
lines = merge3_merge_lines(m3)
lines = render_mergediff2(m3, b"dest", b"source")[0]
mergedtext = b"".join(lines)
ui.fout.write(mergedtext)
@ -179,7 +179,7 @@ def sresolve(ui, repo, *args, **opts):
else:
m3 = Merge3Text(basetext, desttext, srctext)
mergedtext = b"".join(merge3_merge_lines(m3))
mergedtext = b"".join(render_mergediff2(m3, b"dest", b"source")[0])
if output := opts.get("output"):
with open(output, "wb") as f:
@ -188,10 +188,6 @@ def sresolve(ui, repo, *args, **opts):
ui.fout.write(mergedtext)
def merge3_merge_lines(m3, name_a=b"dest", name_b=b"source", name_base=b"base"):
return render_merge3(m3, name_a, name_b, name_base)[0]
@command("smerge_bench", commands.dryrunopts)
def smerge_bench(ui, repo, **opts):
merge_commits = repo.dageval(lambda dag: dag.merges(dag.all()))
@ -310,12 +306,12 @@ def unidiff(atext, btext, filepath="") -> bytes:
return b"\n".join(result)
def basediff(m3, name_a, name_b):
def render_mergediff2(m3, name_a, name_b):
lines = []
conflicts = False
for group in m3.merge_groups(automerge=True):
if group[0] == "conflict":
base_lines, a_lines, b_lines = group[1:]
for what, group_lines in m3.merge_groups(automerge=True):
if what == "conflict":
base_lines, a_lines, b_lines = group_lines
basetext = b"".join(base_lines)
bblocks = list(
mdiff.allblocks(
@ -352,7 +348,7 @@ def basediff(m3, name_a, name_b):
lines.append(b">>>>>>> %s\n" % name_b)
conflicts = True
else:
lines.extend(group[1])
lines.extend(group_lines)
return lines, conflicts

View File

@ -62,13 +62,12 @@ test merge adjacent changes -- insertion case
$ hg debugsmerge dest src base
a
<<<<<<< dest
a2
b
c
d
||||||| base
b
+a2
b
+c
+d
=======
b'
-b
+b'
>>>>>>> source
e