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