##// END OF EJS Templates
revlog: add a couple more of useful method on the inner object...
marmoute -
r51986:ff673b9d default
parent child Browse files
Show More
@@ -353,6 +353,7 b' class _InnerRevlog:'
353 sidedata_file,
353 sidedata_file,
354 inline,
354 inline,
355 data_config,
355 data_config,
356 delta_config,
356 feature_config,
357 feature_config,
357 chunk_cache,
358 chunk_cache,
358 default_compression_header,
359 default_compression_header,
@@ -365,6 +366,7 b' class _InnerRevlog:'
365 self.sidedata_file = sidedata_file
366 self.sidedata_file = sidedata_file
366 self.inline = inline
367 self.inline = inline
367 self.data_config = data_config
368 self.data_config = data_config
369 self.delta_config = delta_config
368 self.feature_config = feature_config
370 self.feature_config = feature_config
369
371
370 self._default_compression_header = default_compression_header
372 self._default_compression_header = default_compression_header
@@ -399,6 +401,9 b' class _InnerRevlog:'
399 if self.inline:
401 if self.inline:
400 self._segmentfile.filename = new_index_file
402 self._segmentfile.filename = new_index_file
401
403
404 def __len__(self):
405 return len(self.index)
406
402 # Derived from index values.
407 # Derived from index values.
403
408
404 def start(self, rev):
409 def start(self, rev):
@@ -413,6 +418,48 b' class _InnerRevlog:'
413 """the end of the data chunk for this revision"""
418 """the end of the data chunk for this revision"""
414 return self.start(rev) + self.length(rev)
419 return self.start(rev) + self.length(rev)
415
420
421 def deltaparent(self, rev):
422 """return deltaparent of the given revision"""
423 base = self.index[rev][3]
424 if base == rev:
425 return nullrev
426 elif self.delta_config.general_delta:
427 return base
428 else:
429 return rev - 1
430
431 def issnapshot(self, rev):
432 """tells whether rev is a snapshot"""
433 if not self.delta_config.sparse_revlog:
434 return self.deltaparent(rev) == nullrev
435 elif hasattr(self.index, 'issnapshot'):
436 # directly assign the method to cache the testing and access
437 self.issnapshot = self.index.issnapshot
438 return self.issnapshot(rev)
439 if rev == nullrev:
440 return True
441 entry = self.index[rev]
442 base = entry[3]
443 if base == rev:
444 return True
445 if base == nullrev:
446 return True
447 p1 = entry[5]
448 while self.length(p1) == 0:
449 b = self.deltaparent(p1)
450 if b == p1:
451 break
452 p1 = b
453 p2 = entry[6]
454 while self.length(p2) == 0:
455 b = self.deltaparent(p2)
456 if b == p2:
457 break
458 p2 = b
459 if base == p1 or base == p2:
460 return False
461 return self.issnapshot(base)
462
416 @util.propertycache
463 @util.propertycache
417 def _compressor(self):
464 def _compressor(self):
418 engine = util.compengines[self.feature_config.compression_engine]
465 engine = util.compengines[self.feature_config.compression_engine]
@@ -1428,6 +1475,7 b' class revlog:'
1428 sidedata_file=self._sidedatafile,
1475 sidedata_file=self._sidedatafile,
1429 inline=self._inline,
1476 inline=self._inline,
1430 data_config=self.data_config,
1477 data_config=self.data_config,
1478 delta_config=self.delta_config,
1431 feature_config=self.feature_config,
1479 feature_config=self.feature_config,
1432 chunk_cache=chunk_cache,
1480 chunk_cache=chunk_cache,
1433 default_compression_header=default_compression_header,
1481 default_compression_header=default_compression_header,
@@ -2441,35 +2489,9 b' class revlog:'
2441
2489
2442 def issnapshot(self, rev):
2490 def issnapshot(self, rev):
2443 """tells whether rev is a snapshot"""
2491 """tells whether rev is a snapshot"""
2444 if not self.delta_config.sparse_revlog:
2492 ret = self._inner.issnapshot(rev)
2445 return self.deltaparent(rev) == nullrev
2493 self.issnapshot = self._inner.issnapshot
2446 elif hasattr(self.index, 'issnapshot'):
2494 return ret
2447 # directly assign the method to cache the testing and access
2448 self.issnapshot = self.index.issnapshot
2449 return self.issnapshot(rev)
2450 if rev == nullrev:
2451 return True
2452 entry = self.index[rev]
2453 base = entry[3]
2454 if base == rev:
2455 return True
2456 if base == nullrev:
2457 return True
2458 p1 = entry[5]
2459 while self.length(p1) == 0:
2460 b = self.deltaparent(p1)
2461 if b == p1:
2462 break
2463 p1 = b
2464 p2 = entry[6]
2465 while self.length(p2) == 0:
2466 b = self.deltaparent(p2)
2467 if b == p2:
2468 break
2469 p2 = b
2470 if base == p1 or base == p2:
2471 return False
2472 return self.issnapshot(base)
2473
2495
2474 def snapshotdepth(self, rev):
2496 def snapshotdepth(self, rev):
2475 """number of snapshot in the chain before this one"""
2497 """number of snapshot in the chain before this one"""
General Comments 0
You need to be logged in to leave comments. Login now