comparison mercurial/filelog.py @ 47759:d7515d29761d stable 5.9rc0

branching: merge default into stable This mark the start of the 5.9 freeze.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 21 Jul 2021 22:52:09 +0200
parents 96ee8ca99f5a
children 436932c2cfaa
comparison
equal deleted inserted replaced
47054:29ea3b4c4f62 47759:d7515d29761d
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 from __future__ import absolute_import 8 from __future__ import absolute_import
9 9
10 from .i18n import _ 10 from .i18n import _
11 from .node import ( 11 from .node import nullrev
12 nullid,
13 nullrev,
14 )
15 from . import ( 12 from . import (
16 error, 13 error,
17 revlog, 14 revlog,
18 ) 15 )
19 from .interfaces import ( 16 from .interfaces import (
20 repository, 17 repository,
21 util as interfaceutil, 18 util as interfaceutil,
22 ) 19 )
23 from .utils import storageutil 20 from .utils import storageutil
21 from .revlogutils import (
22 constants as revlog_constants,
23 )
24 24
25 25
26 @interfaceutil.implementer(repository.ifilestorage) 26 @interfaceutil.implementer(repository.ifilestorage)
27 class filelog(object): 27 class filelog(object):
28 def __init__(self, opener, path): 28 def __init__(self, opener, path):
29 self._revlog = revlog.revlog( 29 self._revlog = revlog.revlog(
30 opener, b'/'.join((b'data', path + b'.i')), censorable=True 30 opener,
31 # XXX should use the unencoded path
32 target=(revlog_constants.KIND_FILELOG, path),
33 radix=b'/'.join((b'data', path)),
34 censorable=True,
31 ) 35 )
32 # Full name of the user visible file, relative to the repository root. 36 # Full name of the user visible file, relative to the repository root.
33 # Used by LFS. 37 # Used by LFS.
34 self._revlog.filename = path 38 self._revlog.filename = path
35 self._revlog.revlog_kind = b'filelog'
36 self.nullid = self._revlog.nullid 39 self.nullid = self._revlog.nullid
37 40
38 def __len__(self): 41 def __len__(self):
39 return len(self._revlog) 42 return len(self._revlog)
40 43
41 def __iter__(self): 44 def __iter__(self):
42 return self._revlog.__iter__() 45 return self._revlog.__iter__()
43 46
44 def hasnode(self, node): 47 def hasnode(self, node):
45 if node in (nullid, nullrev): 48 if node in (self.nullid, nullrev):
46 return False 49 return False
47 50
48 try: 51 try:
49 self._revlog.rev(node) 52 self._revlog.rev(node)
50 return True 53 return True
66 def node(self, rev): 69 def node(self, rev):
67 return self._revlog.node(rev) 70 return self._revlog.node(rev)
68 71
69 def lookup(self, node): 72 def lookup(self, node):
70 return storageutil.fileidlookup( 73 return storageutil.fileidlookup(
71 self._revlog, node, self._revlog.indexfile 74 self._revlog, node, self._revlog.display_id
72 ) 75 )
73 76
74 def linkrev(self, rev): 77 def linkrev(self, rev):
75 return self._revlog.linkrev(rev) 78 return self._revlog.linkrev(rev)
76 79
222 sharedfiles=sharedfiles, 225 sharedfiles=sharedfiles,
223 revisionscount=revisionscount, 226 revisionscount=revisionscount,
224 trackedsize=trackedsize, 227 trackedsize=trackedsize,
225 storedsize=storedsize, 228 storedsize=storedsize,
226 ) 229 )
227
228 # TODO these aren't part of the interface and aren't internal methods.
229 # Callers should be fixed to not use them.
230
231 # Used by bundlefilelog, unionfilelog.
232 @property
233 def indexfile(self):
234 return self._revlog.indexfile
235
236 @indexfile.setter
237 def indexfile(self, value):
238 self._revlog.indexfile = value
239 230
240 # Used by repo upgrade. 231 # Used by repo upgrade.
241 def clone(self, tr, destrevlog, **kwargs): 232 def clone(self, tr, destrevlog, **kwargs):
242 if not isinstance(destrevlog, filelog): 233 if not isinstance(destrevlog, filelog):
243 raise error.ProgrammingError(b'expected filelog to clone()') 234 raise error.ProgrammingError(b'expected filelog to clone()')