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 |
|
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 = |
|
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,7 +876,7 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 |
|
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): | |
@@ -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 = |
|
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 = |
|
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