Mercurial > public > mercurial-scm > hg-stable
diff mercurial/mdiff.py @ 64:b3e2ddff0159
Diff in subdirectories from Jake Edge
Dates in diff
Fix O(n^2) behaviour of manifest diff
Add a/ and b/ to work with patch -p1
author | mpm@selenic.com |
---|---|
date | Thu, 12 May 2005 17:54:55 -0800 |
parents | 9197c26a414b |
children | 47c9a869adee |
line wrap: on
line diff
--- a/mercurial/mdiff.py Thu May 12 01:23:51 2005 -0800 +++ b/mercurial/mdiff.py Thu May 12 17:54:55 2005 -0800 @@ -2,11 +2,11 @@ import difflib, struct from cStringIO import StringIO -def unidiff(a, b, fn): +def unidiff(a, ad, b, bd, fn): if not a and not b: return "" a = a.splitlines(1) b = b.splitlines(1) - l = list(difflib.unified_diff(a, b, fn, fn)) + l = list(difflib.unified_diff(a, b, "a/" + fn, "b/" + fn, ad, bd)) return "".join(l) def textdiff(a, b): @@ -29,15 +29,11 @@ la += 1 lb += 1 - si = lb - while lb < len(b): - lb += 1 - yield "insert", la, la, si, lb + if lb < len(b): + yield "insert", la, la, lb, len(b) - si = la - while la < len(a): - la += 1 - yield "delete", si, la, lb, lb + if la < len(a): + yield "delete", la, len(a), lb, lb def diff(a, b, sorted=0): bin = [] @@ -60,6 +56,7 @@ last = pos = 0 r = [] + c = 0 while pos < len(bin): p1, p2, l = struct.unpack(">lll", bin[pos:pos + 12]) pos += 12 @@ -67,6 +64,7 @@ r.append(bin[pos:pos + l]) pos += l last = p2 + c += 1 r.append(a[last:]) return "".join(r)