##// END OF EJS Templates
Use both the from and to name in mdiff.unidiff....
Dustin Sallings -
r5482:e5eedd74 default
parent child Browse files
Show More
@@ -43,7 +43,7 b' def __gather(ui, repo, node1, node2):'
43 to = mmap1 and repo.file(f).read(mmap1[f]) or None
43 to = mmap1 and repo.file(f).read(mmap1[f]) or None
44 tn = mmap2 and repo.file(f).read(mmap2[f]) or None
44 tn = mmap2 and repo.file(f).read(mmap2[f]) or None
45
45
46 diff = mdiff.unidiff(to, "", tn, "", f).split("\n")
46 diff = mdiff.unidiff(to, "", tn, "", f, f).split("\n")
47
47
48 for line in diff:
48 for line in diff:
49 if not line:
49 if not line:
@@ -873,7 +873,8 b' def debuginstall(ui):'
873 a = "1\n2\n3\n4\n"
873 a = "1\n2\n3\n4\n"
874 b = "1\n2\n3\ninsert\n4\n"
874 b = "1\n2\n3\ninsert\n4\n"
875 fa = writetemp(a)
875 fa = writetemp(a)
876 d = mdiff.unidiff(a, None, b, None, os.path.basename(fa))
876 d = mdiff.unidiff(a, None, b, None, os.path.basename(fa),
877 os.path.basename(fa))
877 fd = writetemp(d)
878 fd = writetemp(d)
878
879
879 files = {}
880 files = {}
@@ -59,11 +59,11 b' def wsclean(opts, text):'
59 text = re.sub('\n+', '', text)
59 text = re.sub('\n+', '', text)
60 return text
60 return text
61
61
62 def unidiff(a, ad, b, bd, fn, r=None, opts=defaultopts):
62 def unidiff(a, ad, b, bd, fn1, fn2, r=None, opts=defaultopts):
63 def datetag(date, addtab=True):
63 def datetag(date, addtab=True):
64 if not opts.git and not opts.nodates:
64 if not opts.git and not opts.nodates:
65 return '\t%s\n' % date
65 return '\t%s\n' % date
66 if addtab and ' ' in fn:
66 if addtab and ' ' in fn1:
67 return '\t\n'
67 return '\t\n'
68 return '\n'
68 return '\n'
69
69
@@ -76,29 +76,29 b' def unidiff(a, ad, b, bd, fn, r=None, op'
76 return md5.new(v).digest()
76 return md5.new(v).digest()
77 if a and b and len(a) == len(b) and h(a) == h(b):
77 if a and b and len(a) == len(b) and h(a) == h(b):
78 return ""
78 return ""
79 l = ['Binary file %s has changed\n' % fn]
79 l = ['Binary file %s has changed\n' % fn1]
80 elif not a:
80 elif not a:
81 b = splitnewlines(b)
81 b = splitnewlines(b)
82 if a is None:
82 if a is None:
83 l1 = '--- /dev/null%s' % datetag(epoch, False)
83 l1 = '--- /dev/null%s' % datetag(epoch, False)
84 else:
84 else:
85 l1 = "--- %s%s" % ("a/" + fn, datetag(ad))
85 l1 = "--- %s%s" % ("a/" + fn1, datetag(ad))
86 l2 = "+++ %s%s" % ("b/" + fn, datetag(bd))
86 l2 = "+++ %s%s" % ("b/" + fn2, datetag(bd))
87 l3 = "@@ -0,0 +1,%d @@\n" % len(b)
87 l3 = "@@ -0,0 +1,%d @@\n" % len(b)
88 l = [l1, l2, l3] + ["+" + e for e in b]
88 l = [l1, l2, l3] + ["+" + e for e in b]
89 elif not b:
89 elif not b:
90 a = splitnewlines(a)
90 a = splitnewlines(a)
91 l1 = "--- %s%s" % ("a/" + fn, datetag(ad))
91 l1 = "--- %s%s" % ("a/" + fn1, datetag(ad))
92 if b is None:
92 if b is None:
93 l2 = '+++ /dev/null%s' % datetag(epoch, False)
93 l2 = '+++ /dev/null%s' % datetag(epoch, False)
94 else:
94 else:
95 l2 = "+++ %s%s" % ("b/" + fn, datetag(bd))
95 l2 = "+++ %s%s" % ("b/" + fn2, datetag(bd))
96 l3 = "@@ -1,%d +0,0 @@\n" % len(a)
96 l3 = "@@ -1,%d +0,0 @@\n" % len(a)
97 l = [l1, l2, l3] + ["-" + e for e in a]
97 l = [l1, l2, l3] + ["-" + e for e in a]
98 else:
98 else:
99 al = splitnewlines(a)
99 al = splitnewlines(a)
100 bl = splitnewlines(b)
100 bl = splitnewlines(b)
101 l = list(bunidiff(a, b, al, bl, "a/" + fn, "b/" + fn, opts=opts))
101 l = list(bunidiff(a, b, al, bl, "a/" + fn1, "b/" + fn2, opts=opts))
102 if not l: return ""
102 if not l: return ""
103 # difflib uses a space, rather than a tab
103 # difflib uses a space, rather than a tab
104 l[0] = "%s%s" % (l[0][:-2], datetag(ad))
104 l[0] = "%s%s" % (l[0][:-2], datetag(ad))
@@ -110,7 +110,7 b' def unidiff(a, ad, b, bd, fn, r=None, op'
110
110
111 if r:
111 if r:
112 l.insert(0, "diff %s %s\n" %
112 l.insert(0, "diff %s %s\n" %
113 (' '.join(["-r %s" % rev for rev in r]), fn))
113 (' '.join(["-r %s" % rev for rev in r]), fn1))
114
114
115 return "".join(l)
115 return "".join(l)
116
116
@@ -1230,6 +1230,7 b' def diff(repo, node1=None, node2=None, f'
1230 to = getfilectx(f, ctx1).data()
1230 to = getfilectx(f, ctx1).data()
1231 if f not in removed:
1231 if f not in removed:
1232 tn = getfilectx(f, ctx2).data()
1232 tn = getfilectx(f, ctx2).data()
1233 a, b = f, f
1233 if opts.git:
1234 if opts.git:
1234 def gitmode(x, l):
1235 def gitmode(x, l):
1235 return l and '120000' or (x and '100755' or '100644')
1236 return l and '120000' or (x and '100755' or '100644')
@@ -1238,7 +1239,6 b' def diff(repo, node1=None, node2=None, f'
1238 header.append('old mode %s\n' % omode)
1239 header.append('old mode %s\n' % omode)
1239 header.append('new mode %s\n' % nmode)
1240 header.append('new mode %s\n' % nmode)
1240
1241
1241 a, b = f, f
1242 if f in added:
1242 if f in added:
1243 mode = gitmode(execf2(f), linkf2(f))
1243 mode = gitmode(execf2(f), linkf2(f))
1244 if f in copied:
1244 if f in copied:
@@ -1278,7 +1278,7 b' def diff(repo, node1=None, node2=None, f'
1278 text = mdiff.unidiff(to, date1,
1278 text = mdiff.unidiff(to, date1,
1279 # ctx2 date may be dynamic
1279 # ctx2 date may be dynamic
1280 tn, util.datestr(ctx2.date()),
1280 tn, util.datestr(ctx2.date()),
1281 f, r, opts=opts)
1281 a, b, r, opts=opts)
1282 if text or len(header) > 1:
1282 if text or len(header) > 1:
1283 fp.write(''.join(header))
1283 fp.write(''.join(header))
1284 fp.write(text)
1284 fp.write(text)
@@ -33,7 +33,7 b' old mode 100755'
33 new mode 100644
33 new mode 100644
34 rename from src
34 rename from src
35 rename to dst
35 rename to dst
36 --- a/dst
36 --- a/src
37 +++ b/dst
37 +++ b/dst
38 @@ -3,3 +3,4 @@ 3
38 @@ -3,3 +3,4 @@ 3
39 3
39 3
@@ -84,7 +84,7 b' rename to dst2'
84 diff --git a/foo b/bar
84 diff --git a/foo b/bar
85 rename from foo
85 rename from foo
86 rename to bar
86 rename to bar
87 --- a/bar
87 --- a/foo
88 +++ b/bar
88 +++ b/bar
89 @@ -1,2 +1,3 @@ a
89 @@ -1,2 +1,3 @@ a
90 a
90 a
@@ -94,7 +94,7 b' rename to bar'
94 diff --git a/bar b/foo
94 diff --git a/bar b/foo
95 rename from bar
95 rename from bar
96 rename to foo
96 rename to foo
97 --- a/foo
97 --- a/bar
98 +++ b/foo
98 +++ b/foo
99 @@ -1,3 +1,2 @@ a
99 @@ -1,3 +1,2 @@ a
100 a
100 a
@@ -105,7 +105,7 b' rename to foo'
105 diff --git a/foo b/bar
105 diff --git a/foo b/bar
106 rename from foo
106 rename from foo
107 rename to bar
107 rename to bar
108 --- a/bar
108 --- a/foo
109 +++ b/bar
109 +++ b/bar
110 @@ -1,1 +1,3 @@ a
110 @@ -1,1 +1,3 @@ a
111 a
111 a
@@ -115,7 +115,7 b' rename to bar'
115 diff --git a/bar b/foo
115 diff --git a/bar b/foo
116 rename from bar
116 rename from bar
117 rename to foo
117 rename to foo
118 --- a/foo
118 --- a/bar
119 +++ b/foo
119 +++ b/foo
120 @@ -1,3 +1,1 @@ a
120 @@ -1,3 +1,1 @@ a
121 a
121 a
General Comments 0
You need to be logged in to leave comments. Login now