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): |