##// END OF EJS Templates
revlog: eliminate diff and patches functions...
Matt Mackall -
r4989:1aaed3d6 default
parent child Browse files
Show More
@@ -12,8 +12,7 b' of the GNU General Public License, incor'
12 12
13 13 from node import *
14 14 from i18n import _
15 import changegroup, util, os, struct, bz2, tempfile
16
15 import changegroup, util, os, struct, bz2, tempfile, mdiff
17 16 import localrepo, changelog, manifest, filelog, revlog
18 17
19 18 class bundlerevlog(revlog.revlog):
@@ -91,7 +90,7 b' class bundlerevlog(revlog.revlog):'
91 90 elif not self.bundle(rev1) and not self.bundle(rev2):
92 91 return revlog.revlog.revdiff(self, rev1, rev2)
93 92
94 return self.diff(self.revision(self.node(rev1)),
93 return mdiff.textdiff(self.revision(self.node(rev1)),
95 94 self.revision(self.node(rev2)))
96 95
97 96 def revision(self, node):
@@ -115,7 +114,7 b' class bundlerevlog(revlog.revlog):'
115 114
116 115 while chain:
117 116 delta = self.chunk(chain.pop())
118 text = self.patches(text, [delta])
117 text = mdiff.patches(text, [delta])
119 118
120 119 p1, p2 = self.parents(node)
121 120 if node != revlog.hash(text, p1, p2):
@@ -830,14 +830,6 b' class revlog(object):'
830 830 p1, p2 = self.parents(node)
831 831 return hash(text, p1, p2) != node
832 832
833 def diff(self, a, b):
834 """return a delta between two revisions"""
835 return mdiff.textdiff(a, b)
836
837 def patches(self, t, pl):
838 """apply a list of patches to a string"""
839 return mdiff.patches(t, pl)
840
841 833 def chunk(self, rev, df=None):
842 834 start, length = self.start(rev), self.length(rev)
843 835 if self._inline:
@@ -884,7 +876,7 b' class revlog(object):'
884 876 if b1 == b2 and rev1 + 1 == rev2:
885 877 return self.chunk(rev2)
886 878 else:
887 return self.diff(self.revision(self.node(rev1)),
879 return mdiff.textdiff(self.revision(self.node(rev1)),
888 880 self.revision(self.node(rev2)))
889 881
890 882 def revision(self, node):
@@ -914,12 +906,8 b' class revlog(object):'
914 906 self._loadindex(base, rev + 1)
915 907 text = self.chunk(base, df=df)
916 908
917 bins = []
918 for r in xrange(base + 1, rev + 1):
919 bins.append(self.chunk(r, df=df))
920
921 text = self.patches(text, bins)
922
909 bins = [self.chunk(r, df) for r in xrange(base + 1, rev + 1)]
910 text = mdiff.patches(text, bins)
923 911 p1, p2 = self.parents(node)
924 912 if node != hash(text, p1, p2):
925 913 raise RevlogError(_("integrity check failed on %s:%d")
@@ -998,7 +986,7 b' class revlog(object):'
998 986 if curr:
999 987 if not d:
1000 988 ptext = self.revision(self.node(prev))
1001 d = self.diff(ptext, text)
989 d = mdiff.textdiff(ptext, text)
1002 990 data = compress(d)
1003 991 l = len(data[1]) + len(data[0])
1004 992 dist = l + offset - self.start(base)
@@ -1150,7 +1138,7 b' class revlog(object):'
1150 1138 dfh.flush()
1151 1139 ifh.flush()
1152 1140 text = self.revision(chain)
1153 text = self.patches(text, [delta])
1141 text = mdiff.patches(text, [delta])
1154 1142 chk = self._addrevision(text, transaction, link, p1, p2, None,
1155 1143 ifh, dfh)
1156 1144 if not dfh and not self._inline:
General Comments 0
You need to be logged in to leave comments. Login now