##// END OF EJS Templates
make readconfig take a filename instead of a file pointer as argument...
make readconfig take a filename instead of a file pointer as argument catch parse error while reading a config file add a testcase for parse error

File last commit:

r1452:f1755621 default
r1473:7d66ce98 default
Show More
mdiff.py
62 lines | 1.8 KiB | text/x-python | PythonLexer
mpm@selenic.com
mdiff.py: kill #! line, add copyright notice...
r239 # mdiff.py - diff and patch routines for mercurial
#
# Copyright 2005 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference.
Matt Mackall
Clean up mdiff imports
r1379 import difflib, struct, bdiff, util, mpatch
mpm@selenic.com
Add back links from file revisions to changeset revisions...
r0
mpm@selenic.com
Add automatic binary file detection to diff and export...
r1015 def unidiff(a, ad, b, bd, fn, r=None, text=False):
Thomas Arendsen Hein
Show revisions in diffs like CVS, based on a patch from Goffredo Baroncelli....
r396
mpm@selenic.com
unidiff: punt on comparing empty files
r35 if not a and not b: return ""
Matt Mackall
Clean up mdiff imports
r1379 epoch = util.datestr((0, 0))
mpm@selenic.com
Attempt to make diff deal with null sources properly...
r264
Matt Mackall
Clean up mdiff imports
r1379 if not text and (util.binary(a) or util.binary(b)):
mpm@selenic.com
Add automatic binary file detection to diff and export...
r1015 l = ['Binary file %s has changed\n' % fn]
elif a == None:
mpm@selenic.com
Attempt to make diff deal with null sources properly...
r264 b = b.splitlines(1)
Benoit Boissinot
make diff dates be epoch for add/remove
r1378 l1 = "--- %s\t%s\n" % ("/dev/null", epoch)
mpm@selenic.com
Attempt to make diff deal with null sources properly...
r264 l2 = "+++ %s\t%s\n" % ("b/" + fn, bd)
l3 = "@@ -0,0 +1,%d @@\n" % len(b)
l = [l1, l2, l3] + ["+" + e for e in b]
elif b == None:
a = a.splitlines(1)
l1 = "--- %s\t%s\n" % ("a/" + fn, ad)
Benoit Boissinot
make diff dates be epoch for add/remove
r1378 l2 = "+++ %s\t%s\n" % ("/dev/null", epoch)
mpm@selenic.com
Attempt to make diff deal with null sources properly...
r264 l3 = "@@ -1,%d +0,0 @@\n" % len(a)
l = [l1, l2, l3] + ["-" + e for e in a]
else:
a = a.splitlines(1)
b = b.splitlines(1)
mpm@selenic.com
diff: use tab to separate date from filename...
r272 l = list(difflib.unified_diff(a, b, "a/" + fn, "b/" + fn))
mpm@selenic.com
unidiff: handle empty diffs more gracefully...
r278 if not l: return ""
mpm@selenic.com
diff: use tab to separate date from filename...
r272 # difflib uses a space, rather than a tab
l[0] = l[0][:-2] + "\t" + ad + "\n"
l[1] = l[1][:-2] + "\t" + bd + "\n"
mpm@selenic.com
hg diff: fix missing final newline bug
r170
for ln in xrange(len(l)):
if l[ln][-1] != '\n':
l[ln] += "\n\ No newline at end of file\n"
Thomas Arendsen Hein
Show revisions in diffs like CVS, based on a patch from Goffredo Baroncelli....
r396 if r:
l.insert(0, "diff %s %s\n" %
(' '.join(["-r %s" % rev for rev in r]), fn))
mpm@selenic.com
Add back links from file revisions to changeset revisions...
r0 return "".join(l)
mpm@selenic.com
Add a function to return the new text from a binary diff
r120 def patchtext(bin):
pos = 0
t = []
while pos < len(bin):
p1, p2, l = struct.unpack(">lll", bin[pos:pos + 12])
pos += 12
t.append(bin[pos:pos + l])
pos += l
return "".join(t)
mpm@selenic.com
Add back links from file revisions to changeset revisions...
r0 def patch(a, bin):
Matt Mackall
Clean up mdiff imports
r1379 return mpatch.patches(a, [bin])
mpm@selenic.com
Start using bdiff for generating deltas...
r432
Matt Mackall
Clean up mdiff imports
r1379 patches = mpatch.patches
mpm@selenic.com
Start using bdiff for generating deltas...
r432 textdiff = bdiff.bdiff