##// END OF EJS Templates
revlog: only allow lazy parsing with revlogng files...
Matt Mackall -
r4976:79c39cc9 default
parent child Browse files
Show More
@@ -88,11 +88,9 b' class lazyparser(object):'
88 88 safe_to_use = os.name != 'nt' or (not util.is_win_9x() and
89 89 hasattr(util, 'win32api'))
90 90
91 def __init__(self, dataf, size, indexformat, shaoffset):
91 def __init__(self, dataf, size):
92 92 self.dataf = dataf
93 self.format = indexformat
94 self.s = struct.calcsize(indexformat)
95 self.indexformat = indexformat
93 self.s = struct.calcsize(indexformatng)
96 94 self.datasize = size
97 95 self.l = size/self.s
98 96 self.index = [None] * self.l
@@ -100,7 +98,6 b' class lazyparser(object):'
100 98 self.allmap = 0
101 99 self.all = 0
102 100 self.mapfind_count = 0
103 self.shaoffset = shaoffset
104 101
105 102 def loadmap(self):
106 103 """
@@ -120,7 +117,7 b' class lazyparser(object):'
120 117 data = self.dataf.read(blocksize)
121 118 off = 0
122 119 for x in xrange(256):
123 n = data[off + self.shaoffset:off + self.shaoffset + 20]
120 n = data[off + ngshaoffset:off + ngshaoffset + 20]
124 121 self.map[n] = count
125 122 count += 1
126 123 if count >= self.l:
@@ -148,7 +145,7 b' class lazyparser(object):'
148 145 if self.index[i + x] == None:
149 146 b = data[off : off + self.s]
150 147 self.index[i + x] = b
151 n = b[self.shaoffset:self.shaoffset + 20]
148 n = b[ngshaoffset:ngshaoffset + 20]
152 149 self.map[n] = i + x
153 150 off += self.s
154 151
@@ -187,7 +184,7 b' class lazyparser(object):'
187 184 if off >= 0:
188 185 i = off / self.s
189 186 off = i * self.s
190 n = data[off + self.shaoffset:off + self.shaoffset + 20]
187 n = data[off + ngshaoffset:off + ngshaoffset + 20]
191 188 if n == node:
192 189 self.map[n] = i + start / self.s
193 190 return node
@@ -232,7 +229,7 b' class lazyindex(object):'
232 229 def __getitem__(self, pos):
233 230 ret = self.p.index[pos] or self.load(pos)
234 231 if isinstance(ret, str):
235 ret = struct.unpack(self.p.indexformat, ret)
232 ret = struct.unpack(indexformatng, ret)
236 233 return ret
237 234 def __setitem__(self, pos, item):
238 235 self.p.index[pos] = item
@@ -262,7 +259,7 b' class lazymap(object):'
262 259 self.p.loadindex(i)
263 260 ret = self.p.index[i]
264 261 if isinstance(ret, str):
265 ret = struct.unpack(self.p.indexformat, ret)
262 ret = struct.unpack(indexformatng, ret)
266 263 yield ret[-1]
267 264 def __getitem__(self, key):
268 265 try:
@@ -321,7 +318,7 b' class revlogio(object):'
321 318 if (lazyparser.safe_to_use and not inline and
322 319 st and st.st_size > 1000000):
323 320 # big index, let's parse it on demand
324 parser = lazyparser(fp, st.st_size, indexformatng, ngshaoffset)
321 parser = lazyparser(fp, st.st_size)
325 322 index = lazyindex(parser)
326 323 nodemap = lazymap(parser)
327 324 e = list(index[0])
General Comments 0
You need to be logged in to leave comments. Login now