comparison mercurial/mdiff.py @ 1015:22571b8d35d3

Add automatic binary file detection to diff and export Based on a patch by Fuming Wang - add util.binary which decides whether a file is binary if it has any NUL characters in the first 1K. - teach mdiff.unidiff to print "binary file <x> has changed" for binary files - add text flag to cause unidiff and dodiff to treat all files as text - add -a and --text flags (like diff(1)) to hg diff and export - update docs
author mpm@selenic.com
date Tue, 23 Aug 2005 19:58:46 -0700
parents df8a5a0098d4
children a0fcfbbf52bb
comparison
equal deleted inserted replaced
1014:e37cd99fa909 1015:22571b8d35d3
5 # This software may be used and distributed according to the terms 5 # This software may be used and distributed according to the terms
6 # of the GNU General Public License, incorporated herein by reference. 6 # of the GNU General Public License, incorporated herein by reference.
7 7
8 import difflib, struct, bdiff 8 import difflib, struct, bdiff
9 from mpatch import * 9 from mpatch import *
10 from util import *
10 11
11 def unidiff(a, ad, b, bd, fn, r=None): 12 def unidiff(a, ad, b, bd, fn, r=None, text=False):
12 13
13 if not a and not b: return "" 14 if not a and not b: return ""
14 15
15 if a == None: 16 if not text and (binary(a) or binary(b)):
17 l = ['Binary file %s has changed\n' % fn]
18 elif a == None:
16 b = b.splitlines(1) 19 b = b.splitlines(1)
17 l1 = "--- %s\t%s\n" % ("/dev/null", ad) 20 l1 = "--- %s\t%s\n" % ("/dev/null", ad)
18 l2 = "+++ %s\t%s\n" % ("b/" + fn, bd) 21 l2 = "+++ %s\t%s\n" % ("b/" + fn, bd)
19 l3 = "@@ -0,0 +1,%d @@\n" % len(b) 22 l3 = "@@ -0,0 +1,%d @@\n" % len(b)
20 l = [l1, l2, l3] + ["+" + e for e in b] 23 l = [l1, l2, l3] + ["+" + e for e in b]