Mercurial > hg
changeset 35951:8b6dd3922f70
patch: unify check_binary and binary flags
Follows up 079b27b5a869. If opts.text=True, check_binary is ignored, so we
can just pass the binary flag to unidiff().
perfunidiff now takes any inputs as text files, which I think is a desired
behavior.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 04 Feb 2018 10:28:03 +0900 |
parents | 80e5210df25c |
children | 9e641c4525a2 |
files | contrib/perf.py mercurial/mdiff.py mercurial/patch.py |
diffstat | 3 files changed, 7 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/contrib/perf.py Wed Feb 07 13:49:02 2018 +0530 +++ b/contrib/perf.py Sun Feb 04 10:28:03 2018 +0900 @@ -1088,7 +1088,7 @@ for left, right in textpairs: # The date strings don't matter, so we pass empty strings. headerlines, hunks = mdiff.unidiff( - left, '', right, '', 'left', 'right') + left, '', right, '', 'left', 'right', binary=False) # consume iterators in roughly the way patch.py does b'\n'.join(headerlines) b''.join(sum((list(hlines) for hrange, hlines in hunks), []))
--- a/mercurial/mdiff.py Wed Feb 07 13:49:02 2018 +0530 +++ b/mercurial/mdiff.py Sun Feb 04 10:28:03 2018 +0900 @@ -236,7 +236,7 @@ yield s, type yield s1, '=' -def unidiff(a, ad, b, bd, fn1, fn2, opts=defaultopts, check_binary=True): +def unidiff(a, ad, b, bd, fn1, fn2, binary, opts=defaultopts): """Return a unified diff as a (headers, hunks) tuple. If the diff is not null, `headers` is a list with unified diff header @@ -244,8 +244,7 @@ (hunkrange, hunklines) coming from _unidiff(). Otherwise, `headers` and `hunks` are empty. - Setting `check_binary` to false will skip the binary check, i.e. when - it has been done in advance. Files are expected to be text in this case. + Set binary=True if either a or b should be taken as a binary file. """ def datetag(date, fn=None): if not opts.git and not opts.nodates: @@ -269,7 +268,7 @@ fn1 = util.pconvert(fn1) fn2 = util.pconvert(fn2) - if not opts.text and check_binary and (util.binary(a) or util.binary(b)): + if binary: if a and b and len(a) == len(b) and a == b: return sentinel headerlines = []
--- a/mercurial/patch.py Wed Feb 07 13:49:02 2018 +0530 +++ b/mercurial/patch.py Sun Feb 04 10:28:03 2018 +0900 @@ -2699,12 +2699,9 @@ flag2 = ctx2.flags(f2) # if binary is True, output "summary" or "base85", but not "text diff" if opts.text: - check_binary = True binary = False else: - check_binary = any(f.isbinary() - for f in [fctx1, fctx2] if f is not None) - binary = check_binary + binary = any(f.isbinary() for f in [fctx1, fctx2] if f is not None) if losedatafn and not opts.git: if (binary or @@ -2794,8 +2791,8 @@ uheaders, hunks = mdiff.unidiff(content1, date1, content2, date2, - path1, path2, opts=opts, - check_binary=check_binary) + path1, path2, + binary=binary, opts=opts) header.extend(uheaders) yield fctx1, fctx2, header, hunks