Mercurial > hg-stable
changeset 15529:b35cf47286a6
mdiff: split lines in allblocks() only when necessary
These are only required to handle the --ignore-blank-lines case
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Fri, 18 Nov 2011 14:16:47 +0100 |
parents | a84698badf0b |
children | eeac5e179243 |
files | mercurial/mdiff.py |
diffstat | 1 files changed, 8 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/mdiff.py Fri Nov 18 12:04:31 2011 +0100 +++ b/mercurial/mdiff.py Fri Nov 18 14:16:47 2011 +0100 @@ -112,10 +112,6 @@ """ if opts is None: opts = defaultopts - if lines1 is None: - lines1 = splitnewlines(text1) - if lines2 is None: - lines2 = splitnewlines(text2) if opts.ignorews or opts.ignorewsamount: text1 = wsclean(opts, text1, False) text2 = wsclean(opts, text2, False) @@ -130,17 +126,19 @@ else: s = [0, 0, 0, 0] s = [s[1], s1[0], s[3], s1[2]] - old = lines1[s[0]:s[1]] - new = lines2[s[2]:s[3]] # bdiff sometimes gives huge matches past eof, this check eats them, # and deals with the special first match case described above - if old or new: + if s[0] != s[1] or s[2] != s[3]: type = '!' if opts.ignoreblanklines: - cold = wsclean(opts, "".join(old)) - cnew = wsclean(opts, "".join(new)) - if cold == cnew: + if lines1 is None: + lines1 = splitnewlines(text1) + if lines2 is None: + lines2 = splitnewlines(text2) + old = wsclean(opts, "".join(lines1[s[0]:s[1]])) + new = wsclean(opts, "".join(lines2[s[2]:s[3]])) + if old == new: type = '~' yield s, type yield s1, '='