mercurial/filelog.py
changeset 43076 2372284d9457
parent 42814 2c4f656c8e9f
child 43077 687b865b95ad
equal deleted inserted replaced
43075:57875cf423c9 43076:2372284d9457
    18 )
    18 )
    19 from .interfaces import (
    19 from .interfaces import (
    20     repository,
    20     repository,
    21     util as interfaceutil,
    21     util as interfaceutil,
    22 )
    22 )
    23 from .utils import (
    23 from .utils import storageutil
    24     storageutil,
    24 
    25 )
       
    26 
    25 
    27 @interfaceutil.implementer(repository.ifilestorage)
    26 @interfaceutil.implementer(repository.ifilestorage)
    28 class filelog(object):
    27 class filelog(object):
    29     def __init__(self, opener, path):
    28     def __init__(self, opener, path):
    30         self._revlog = revlog.revlog(opener,
    29         self._revlog = revlog.revlog(
    31                                      '/'.join(('data', path + '.i')),
    30             opener, '/'.join(('data', path + '.i')), censorable=True
    32                                      censorable=True)
    31         )
    33         # Full name of the user visible file, relative to the repository root.
    32         # Full name of the user visible file, relative to the repository root.
    34         # Used by LFS.
    33         # Used by LFS.
    35         self._revlog.filename = path
    34         self._revlog.filename = path
    36 
    35 
    37     def __len__(self):
    36     def __len__(self):
    64 
    63 
    65     def node(self, rev):
    64     def node(self, rev):
    66         return self._revlog.node(rev)
    65         return self._revlog.node(rev)
    67 
    66 
    68     def lookup(self, node):
    67     def lookup(self, node):
    69         return storageutil.fileidlookup(self._revlog, node,
    68         return storageutil.fileidlookup(
    70                                         self._revlog.indexfile)
    69             self._revlog, node, self._revlog.indexfile
       
    70         )
    71 
    71 
    72     def linkrev(self, rev):
    72     def linkrev(self, rev):
    73         return self._revlog.linkrev(rev)
    73         return self._revlog.linkrev(rev)
    74 
    74 
    75     def commonancestorsheads(self, node1, node2):
    75     def commonancestorsheads(self, node1, node2):
    93         return self._revlog.revision(node, _df=_df, raw=raw)
    93         return self._revlog.revision(node, _df=_df, raw=raw)
    94 
    94 
    95     def rawdata(self, node, _df=None):
    95     def rawdata(self, node, _df=None):
    96         return self._revlog.rawdata(node, _df=_df)
    96         return self._revlog.rawdata(node, _df=_df)
    97 
    97 
    98     def emitrevisions(self, nodes, nodesorder=None,
    98     def emitrevisions(
    99                       revisiondata=False, assumehaveparentrevisions=False,
    99         self,
   100                       deltamode=repository.CG_DELTAMODE_STD):
   100         nodes,
       
   101         nodesorder=None,
       
   102         revisiondata=False,
       
   103         assumehaveparentrevisions=False,
       
   104         deltamode=repository.CG_DELTAMODE_STD,
       
   105     ):
   101         return self._revlog.emitrevisions(
   106         return self._revlog.emitrevisions(
   102             nodes, nodesorder=nodesorder, revisiondata=revisiondata,
   107             nodes,
       
   108             nodesorder=nodesorder,
       
   109             revisiondata=revisiondata,
   103             assumehaveparentrevisions=assumehaveparentrevisions,
   110             assumehaveparentrevisions=assumehaveparentrevisions,
   104             deltamode=deltamode)
   111             deltamode=deltamode,
   105 
   112         )
   106     def addrevision(self, revisiondata, transaction, linkrev, p1, p2,
   113 
   107                     node=None, flags=revlog.REVIDX_DEFAULT_FLAGS,
   114     def addrevision(
   108                     cachedelta=None):
   115         self,
   109         return self._revlog.addrevision(revisiondata, transaction, linkrev,
   116         revisiondata,
   110                                     p1, p2, node=node, flags=flags,
   117         transaction,
   111                                     cachedelta=cachedelta)
   118         linkrev,
   112 
   119         p1,
   113     def addgroup(self, deltas, linkmapper, transaction, addrevisioncb=None,
   120         p2,
   114                  maybemissingparents=False):
   121         node=None,
       
   122         flags=revlog.REVIDX_DEFAULT_FLAGS,
       
   123         cachedelta=None,
       
   124     ):
       
   125         return self._revlog.addrevision(
       
   126             revisiondata,
       
   127             transaction,
       
   128             linkrev,
       
   129             p1,
       
   130             p2,
       
   131             node=node,
       
   132             flags=flags,
       
   133             cachedelta=cachedelta,
       
   134         )
       
   135 
       
   136     def addgroup(
       
   137         self,
       
   138         deltas,
       
   139         linkmapper,
       
   140         transaction,
       
   141         addrevisioncb=None,
       
   142         maybemissingparents=False,
       
   143     ):
   115         if maybemissingparents:
   144         if maybemissingparents:
   116             raise error.Abort(_('revlog storage does not support missing '
   145             raise error.Abort(
   117                                 'parents write mode'))
   146                 _(
   118 
   147                     'revlog storage does not support missing '
   119         return self._revlog.addgroup(deltas, linkmapper, transaction,
   148                     'parents write mode'
   120                                      addrevisioncb=addrevisioncb)
   149                 )
       
   150             )
       
   151 
       
   152         return self._revlog.addgroup(
       
   153             deltas, linkmapper, transaction, addrevisioncb=addrevisioncb
       
   154         )
   121 
   155 
   122     def getstrippoint(self, minlink):
   156     def getstrippoint(self, minlink):
   123         return self._revlog.getstrippoint(minlink)
   157         return self._revlog.getstrippoint(minlink)
   124 
   158 
   125     def strip(self, minlink, transaction):
   159     def strip(self, minlink, transaction):
   163         return not storageutil.filedataequivalent(self, node, text)
   197         return not storageutil.filedataequivalent(self, node, text)
   164 
   198 
   165     def verifyintegrity(self, state):
   199     def verifyintegrity(self, state):
   166         return self._revlog.verifyintegrity(state)
   200         return self._revlog.verifyintegrity(state)
   167 
   201 
   168     def storageinfo(self, exclusivefiles=False, sharedfiles=False,
   202     def storageinfo(
   169                     revisionscount=False, trackedsize=False,
   203         self,
   170                     storedsize=False):
   204         exclusivefiles=False,
       
   205         sharedfiles=False,
       
   206         revisionscount=False,
       
   207         trackedsize=False,
       
   208         storedsize=False,
       
   209     ):
   171         return self._revlog.storageinfo(
   210         return self._revlog.storageinfo(
   172             exclusivefiles=exclusivefiles, sharedfiles=sharedfiles,
   211             exclusivefiles=exclusivefiles,
   173             revisionscount=revisionscount, trackedsize=trackedsize,
   212             sharedfiles=sharedfiles,
   174             storedsize=storedsize)
   213             revisionscount=revisionscount,
       
   214             trackedsize=trackedsize,
       
   215             storedsize=storedsize,
       
   216         )
   175 
   217 
   176     # TODO these aren't part of the interface and aren't internal methods.
   218     # TODO these aren't part of the interface and aren't internal methods.
   177     # Callers should be fixed to not use them.
   219     # Callers should be fixed to not use them.
   178 
   220 
   179     # Used by bundlefilelog, unionfilelog.
   221     # Used by bundlefilelog, unionfilelog.
   189     def clone(self, tr, destrevlog, **kwargs):
   231     def clone(self, tr, destrevlog, **kwargs):
   190         if not isinstance(destrevlog, filelog):
   232         if not isinstance(destrevlog, filelog):
   191             raise error.ProgrammingError('expected filelog to clone()')
   233             raise error.ProgrammingError('expected filelog to clone()')
   192 
   234 
   193         return self._revlog.clone(tr, destrevlog._revlog, **kwargs)
   235         return self._revlog.clone(tr, destrevlog._revlog, **kwargs)
       
   236 
   194 
   237 
   195 class narrowfilelog(filelog):
   238 class narrowfilelog(filelog):
   196     """Filelog variation to be used with narrow stores."""
   239     """Filelog variation to be used with narrow stores."""
   197 
   240 
   198     def __init__(self, opener, path, narrowmatch):
   241     def __init__(self, opener, path, narrowmatch):