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)