equal
deleted
inserted
replaced
112 |
112 |
113 if not text: |
113 if not text: |
114 last = self.length(base) |
114 last = self.length(base) |
115 text = decompress(data[:last]) |
115 text = decompress(data[:last]) |
116 |
116 |
117 for r in range(base + 1, rev + 1): |
117 for r in xrange(base + 1, rev + 1): |
118 s = self.length(r) |
118 s = self.length(r) |
119 b = decompress(data[last:last + s]) |
119 b = decompress(data[last:last + s]) |
120 text = self.patch(text, b) |
120 text = self.patch(text, b) |
121 last = last + s |
121 last = last + s |
122 |
122 |
136 |
136 |
137 n = self.count() |
137 n = self.count() |
138 t = n - 1 |
138 t = n - 1 |
139 |
139 |
140 if n: |
140 if n: |
141 start = self.start(self.base(t)) |
141 base = self.base(t) |
|
142 start = self.start(base) |
142 end = self.end(t) |
143 end = self.end(t) |
143 prev = self.revision(self.tip()) |
144 prev = self.revision(self.tip()) |
144 data = compress(self.diff(prev, text)) |
145 data = compress(self.diff(prev, text)) |
|
146 dist = end - start + len(data) |
145 |
147 |
146 # full versions are inserted when the needed deltas |
148 # full versions are inserted when the needed deltas |
147 # become comparable to the uncompressed text |
149 # become comparable to the uncompressed text |
148 if not n or (end + len(data) - start) > len(text) * 2: |
150 if not n or dist > len(text) * 2: |
149 data = compress(text) |
151 data = compress(text) |
150 base = n |
152 base = n |
151 else: |
153 else: |
152 base = self.base(t) |
154 base = self.base(t) |
153 |
155 |