mercurial/filelog.py
changeset 51822 0338fb200a30
parent 51818 e78b75f3cea9
child 51859 f4733654f144
equal deleted inserted replaced
51821:766c55492258 51822:0338fb200a30
     5 # This software may be used and distributed according to the terms of the
     5 # This software may be used and distributed according to the terms of the
     6 # GNU General Public License version 2 or any later version.
     6 # GNU General Public License version 2 or any later version.
     7 
     7 
     8 
     8 
     9 import typing
     9 import typing
       
    10 
       
    11 from typing import (
       
    12     Iterable,
       
    13     Iterator,
       
    14 )
    10 
    15 
    11 from .i18n import _
    16 from .i18n import _
    12 from .node import nullrev
    17 from .node import nullrev
    13 from . import (
    18 from . import (
    14     error,
    19     error,
    24     rewrite,
    29     rewrite,
    25 )
    30 )
    26 
    31 
    27 
    32 
    28 class FileLog:
    33 class FileLog:
       
    34     _revlog: revlog.revlog
       
    35     nullid: bytes
       
    36     _fix_issue6528: bool
       
    37 
    29     def __init__(self, opener, path, try_split=False):
    38     def __init__(self, opener, path, try_split=False):
    30         self._revlog = revlog.revlog(
    39         self._revlog = revlog.revlog(
    31             opener,
    40             opener,
    32             # XXX should use the unencoded path
    41             # XXX should use the unencoded path
    33             target=(revlog_constants.KIND_FILELOG, path),
    42             target=(revlog_constants.KIND_FILELOG, path),
    41         self._revlog.filename = path
    50         self._revlog.filename = path
    42         self.nullid = self._revlog.nullid
    51         self.nullid = self._revlog.nullid
    43         opts = opener.options
    52         opts = opener.options
    44         self._fix_issue6528 = opts.get(b'issue6528.fix-incoming', True)
    53         self._fix_issue6528 = opts.get(b'issue6528.fix-incoming', True)
    45 
    54 
    46     def get_revlog(self):
    55     def get_revlog(self) -> revlog.revlog:
    47         """return an actual revlog instance if any
    56         """return an actual revlog instance if any
    48 
    57 
    49         This exist because a lot of code leverage the fact the underlying
    58         This exist because a lot of code leverage the fact the underlying
    50         storage is a revlog for optimization, so giving simple way to access
    59         storage is a revlog for optimization, so giving simple way to access
    51         the revlog instance helps such code.
    60         the revlog instance helps such code.
    52         """
    61         """
    53         return self._revlog
    62         return self._revlog
    54 
    63 
    55     def __len__(self):
    64     def __len__(self) -> int:
    56         return len(self._revlog)
    65         return len(self._revlog)
    57 
    66 
    58     def __iter__(self):
    67     def __iter__(self) -> Iterator[int]:
    59         return self._revlog.__iter__()
    68         return self._revlog.__iter__()
    60 
    69 
    61     def hasnode(self, node):
    70     def hasnode(self, node):
    62         if node in (self.nullid, nullrev):
    71         if node in (self.nullid, nullrev):
    63             return False
    72             return False
   232 
   241 
   233         returns True if text is different than what is stored.
   242         returns True if text is different than what is stored.
   234         """
   243         """
   235         return not storageutil.filedataequivalent(self, node, text)
   244         return not storageutil.filedataequivalent(self, node, text)
   236 
   245 
   237     def verifyintegrity(self, state):
   246     def verifyintegrity(self, state) -> Iterable[revlog.RevLogProblem]:
   238         return self._revlog.verifyintegrity(state)
   247         return self._revlog.verifyintegrity(state)
   239 
   248 
   240     def storageinfo(
   249     def storageinfo(
   241         self,
   250         self,
   242         exclusivefiles=False,
   251         exclusivefiles=False,