mercurial/mdiff.py
changeset 264 4c1d7072d5cd
parent 249 619e775aa7f9
child 272 467cea2bf2d8
equal deleted inserted replaced
263:e8eb427c6d71 264:4c1d7072d5cd
     8 import difflib, struct
     8 import difflib, struct
     9 from mercurial.mpatch import *
     9 from mercurial.mpatch import *
    10 
    10 
    11 def unidiff(a, ad, b, bd, fn):
    11 def unidiff(a, ad, b, bd, fn):
    12     if not a and not b: return ""
    12     if not a and not b: return ""
    13     a = a.splitlines(1)
    13 
    14     b = b.splitlines(1)
    14     if a == None:
    15     l = list(difflib.unified_diff(a, b, "a/" + fn, "b/" + fn, ad, bd))
    15         b = b.splitlines(1)
       
    16         l1 = "--- %s\t%s\n" % ("/dev/null", ad)
       
    17         l2 = "+++ %s\t%s\n" % ("b/" + fn, bd)
       
    18         l3 = "@@ -0,0 +1,%d @@\n" % len(b)
       
    19         l = [l1, l2, l3] + ["+" + e for e in b]
       
    20     elif b == None:
       
    21         a = a.splitlines(1)
       
    22         l1 = "--- %s\t%s\n" % ("a/" + fn, ad)
       
    23         l2 = "+++ %s\t%s\n" % ("/dev/null", bd)
       
    24         l3 = "@@ -1,%d +0,0 @@\n" % len(a)
       
    25         l = [l1, l2, l3] + ["-" + e for e in a]
       
    26     else:
       
    27         a = a.splitlines(1)
       
    28         b = b.splitlines(1)
       
    29         l = list(difflib.unified_diff(a, b, "a/" + fn, "b/" + fn, ad, bd))
    16 
    30 
    17     for ln in xrange(len(l)):
    31     for ln in xrange(len(l)):
    18         if l[ln][-1] != '\n':
    32         if l[ln][-1] != '\n':
    19             l[ln] += "\n\ No newline at end of file\n"
    33             l[ln] += "\n\ No newline at end of file\n"
    20 
    34