comparison mercurial/logcmdutil.py @ 35961:0ff41ced4c12

diff: improve ui.write performance when not coloring on Windows Differential Revision: https://phab.mercurial-scm.org/D2022
author Joerg Sonnenberger <joerg@bec.de>
date Sun, 04 Feb 2018 00:29:22 +0100
parents 218b77c4c87a
children f8ad57d24252
comparison
equal deleted inserted replaced
35960:580f7b1b88c7 35961:0ff41ced4c12
77 if stat: 77 if stat:
78 diffopts = diffopts.copy(context=0, noprefix=False) 78 diffopts = diffopts.copy(context=0, noprefix=False)
79 width = 80 79 width = 80
80 if not ui.plain(): 80 if not ui.plain():
81 width = ui.termwidth() 81 width = ui.termwidth()
82 chunks = patch.diff(repo, node1, node2, match, changes, opts=diffopts, 82
83 prefix=prefix, relroot=relroot, 83 chunks = patch.diff(repo, node1, node2, match, changes, opts=diffopts,
84 hunksfilterfn=hunksfilterfn) 84 prefix=prefix, relroot=relroot,
85 for chunk, label in patch.diffstatui(util.iterlines(chunks), 85 hunksfilterfn=hunksfilterfn)
86 width=width): 86
87 write(chunk, label=label) 87 if fp is not None or ui.canwritewithoutlabels():
88 if stat:
89 chunks = patch.diffstat(util.iterlines(chunks), width=width)
90 for chunk in util.filechunkiter(util.chunkbuffer(chunks)):
91 write(chunk)
88 else: 92 else:
89 for chunk, label in patch.diffui(repo, node1, node2, match, 93 if stat:
90 changes, opts=diffopts, prefix=prefix, 94 chunks = patch.diffstatui(util.iterlines(chunks), width=width)
91 relroot=relroot, 95 else:
92 hunksfilterfn=hunksfilterfn): 96 chunks = patch.difflabel(lambda chunks, **kwargs: chunks, chunks,
93 write(chunk, label=label) 97 opts=diffopts)
98 if ui.canbatchlabeledwrites():
99 def gen():
100 for chunk, label in chunks:
101 yield ui.label(chunk, label=label)
102 for chunk in util.filechunkiter(util.chunkbuffer(gen())):
103 write(chunk)
104 else:
105 for chunk, label in chunks:
106 write(chunk, label=label)
94 107
95 if listsubrepos: 108 if listsubrepos:
96 ctx1 = repo[node1] 109 ctx1 = repo[node1]
97 ctx2 = repo[node2] 110 ctx2 = repo[node2]
98 for subpath, sub in scmutil.itersubrepos(ctx1, ctx2): 111 for subpath, sub in scmutil.itersubrepos(ctx1, ctx2):