Mercurial > hg > gitweb
comparison mercurial/revlog.py @ 64:b3e2ddff0159
Diff in subdirectories from Jake Edge
Dates in diff
Fix O(n^2) behaviour of manifest diff
Add a/ and b/ to work with patch -p1
author | mpm@selenic.com |
---|---|
date | Thu, 12 May 2005 17:54:55 -0800 |
parents | 93e868fa0db8 |
children | d40cc5aacc31 |
comparison
equal
deleted
inserted
replaced
63:1c590d34bf61 | 64:b3e2ddff0159 |
---|---|
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 |