Mercurial > public > mercurial-scm > hg-stable
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()') |