comparison mercurial/revlog.py @ 19764:e92650e39f1c stable

generaldelta: initialize basecache properly Previously basecache was incorrectly initialized before adding the first revision from a changegroup. Basecache value influences when full revisions are stored in revlog (when using generaldelta). As a result it was possible to generate a generaldelta-revlog that could be bigger by arbitrary factor than its non-generaldelta equivalent.
author Wojciech Lopata <lopek@fb.com>
date Fri, 20 Sep 2013 10:45:51 -0700
parents fd1bb7c1be78
children a9e92b11a3f2
comparison
equal deleted inserted replaced
19751:478f3379768a 19764:e92650e39f1c
198 """ 198 """
199 self.indexfile = indexfile 199 self.indexfile = indexfile
200 self.datafile = indexfile[:-2] + ".d" 200 self.datafile = indexfile[:-2] + ".d"
201 self.opener = opener 201 self.opener = opener
202 self._cache = None 202 self._cache = None
203 self._basecache = (0, 0) 203 self._basecache = None
204 self._chunkcache = (0, '') 204 self._chunkcache = (0, '')
205 self.index = [] 205 self.index = []
206 self._pcache = {} 206 self._pcache = {}
207 self._nodecache = {nullid: nullrev} 207 self._nodecache = {nullid: nullrev}
208 self._nodepos = None 208 self._nodepos = None
1093 prev = curr - 1 1093 prev = curr - 1
1094 base = chainbase = curr 1094 base = chainbase = curr
1095 offset = self.end(prev) 1095 offset = self.end(prev)
1096 flags = 0 1096 flags = 0
1097 d = None 1097 d = None
1098 if self._basecache is None:
1099 self._basecache = (prev, self.chainbase(prev))
1098 basecache = self._basecache 1100 basecache = self._basecache
1099 p1r, p2r = self.rev(p1), self.rev(p2) 1101 p1r, p2r = self.rev(p1), self.rev(p2)
1100 1102
1101 # should we try to build a delta? 1103 # should we try to build a delta?
1102 if prev != nullrev: 1104 if prev != nullrev: