Mercurial > hg
comparison mercurial/revlog.py @ 39154:e0da43e2f71f
revlog: compute snapshot depth on delta info
We need the information to be available when choosing delta.
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Fri, 20 Jul 2018 14:32:56 +0200 |
parents | 3b1042cab4b4 |
children | a43ef77cab1d |
comparison
equal
deleted
inserted
replaced
39153:9d6fab487c13 | 39154:e0da43e2f71f |
---|---|
604 data = attr.ib() | 604 data = attr.ib() |
605 base = attr.ib() | 605 base = attr.ib() |
606 chainbase = attr.ib() | 606 chainbase = attr.ib() |
607 chainlen = attr.ib() | 607 chainlen = attr.ib() |
608 compresseddeltalen = attr.ib() | 608 compresseddeltalen = attr.ib() |
609 snapshotdepth = attr.ib() | |
609 | 610 |
610 class _deltacomputer(object): | 611 class _deltacomputer(object): |
611 def __init__(self, revlog): | 612 def __init__(self, revlog): |
612 self.revlog = revlog | 613 self.revlog = revlog |
613 | 614 |
734 else: | 735 else: |
735 deltabase = chainbase | 736 deltabase = chainbase |
736 chainlen, compresseddeltalen = revlog._chaininfo(base) | 737 chainlen, compresseddeltalen = revlog._chaininfo(base) |
737 chainlen += 1 | 738 chainlen += 1 |
738 compresseddeltalen += deltalen | 739 compresseddeltalen += deltalen |
740 | |
741 revlog = self.revlog | |
742 snapshotdepth = None | |
743 if deltabase == nullrev: | |
744 snapshotdepth = 0 | |
745 elif revlog._sparserevlog and revlog.issnapshot(deltabase): | |
746 # A delta chain should always be one full snapshot, | |
747 # zero or more semi-snapshots, and zero or more deltas | |
748 p1, p2 = revlog.rev(revinfo.p1), revlog.rev(revinfo.p2) | |
749 if deltabase not in (p1, p2) and revlog.issnapshot(deltabase): | |
750 snapshotdepth = len(revlog._deltachain(deltabase)[0]) | |
751 | |
739 return _deltainfo(dist, deltalen, (header, data), deltabase, | 752 return _deltainfo(dist, deltalen, (header, data), deltabase, |
740 chainbase, chainlen, compresseddeltalen) | 753 chainbase, chainlen, compresseddeltalen, |
754 snapshotdepth) | |
741 | 755 |
742 def finddeltainfo(self, revinfo, fh): | 756 def finddeltainfo(self, revinfo, fh): |
743 """Find an acceptable delta against a candidate revision | 757 """Find an acceptable delta against a candidate revision |
744 | 758 |
745 revinfo: information about the revision (instance of _revisioninfo) | 759 revinfo: information about the revision (instance of _revisioninfo) |