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