mercurial/revlog.py
changeset 39154 e0da43e2f71f
parent 39152 3b1042cab4b4
child 39155 a43ef77cab1d
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)