Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revlog.py @ 43622:02802fa87b74
revlog: deprecate direct `nodemap` access
Now that all in-core user have been updated to the new API, we can deprecated
direct access to nodemap.
Differential Revision: https://phab.mercurial-scm.org/D7362
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sat, 09 Nov 2019 13:23:55 +0100 |
parents | d3df05bab081 |
children | f5991fd7cca7 |
comparison
equal
deleted
inserted
replaced
43621:d3df05bab081 | 43622:02802fa87b74 |
---|---|
203 indexformatv0_pack = indexformatv0.pack | 203 indexformatv0_pack = indexformatv0.pack |
204 indexformatv0_unpack = indexformatv0.unpack | 204 indexformatv0_unpack = indexformatv0.unpack |
205 | 205 |
206 | 206 |
207 class revlogoldindex(list): | 207 class revlogoldindex(list): |
208 @property | |
209 def nodemap(self): | |
210 msg = "index.nodemap is deprecated, " "use index.[has_node|rev|get_rev]" | |
211 util.nouideprecwarn(msg, b'5.3', stacklevel=2) | |
212 return self._nodemap | |
213 | |
208 @util.propertycache | 214 @util.propertycache |
209 def nodemap(self): | 215 def _nodemap(self): |
210 nodemap = revlogutils.NodeMap({nullid: nullrev}) | 216 nodemap = revlogutils.NodeMap({nullid: nullrev}) |
211 for r in range(0, len(self)): | 217 for r in range(0, len(self)): |
212 n = self[r][7] | 218 n = self[r][7] |
213 nodemap[n] = r | 219 nodemap[n] = r |
214 return nodemap | 220 return nodemap |
215 | 221 |
216 def has_node(self, node): | 222 def has_node(self, node): |
217 """return True if the node exist in the index""" | 223 """return True if the node exist in the index""" |
218 return node in self.nodemap | 224 return node in self._nodemap |
219 | 225 |
220 def rev(self, node): | 226 def rev(self, node): |
221 """return a revision for a node | 227 """return a revision for a node |
222 | 228 |
223 If the node is unknown, raise a RevlogError""" | 229 If the node is unknown, raise a RevlogError""" |
224 return self.nodemap[node] | 230 return self._nodemap[node] |
225 | 231 |
226 def get_rev(self, node): | 232 def get_rev(self, node): |
227 """return a revision for a node | 233 """return a revision for a node |
228 | 234 |
229 If the node is unknown, return None""" | 235 If the node is unknown, return None""" |
230 return self.nodemap.get(node) | 236 return self._nodemap.get(node) |
231 | 237 |
232 def append(self, tup): | 238 def append(self, tup): |
233 self.nodemap[tup[7]] = len(self) | 239 self._nodemap[tup[7]] = len(self) |
234 super(revlogoldindex, self).append(tup) | 240 super(revlogoldindex, self).append(tup) |
235 | 241 |
236 def __delitem__(self, i): | 242 def __delitem__(self, i): |
237 if not isinstance(i, slice) or not i.stop == -1 or i.step is not None: | 243 if not isinstance(i, slice) or not i.stop == -1 or i.step is not None: |
238 raise ValueError(b"deleting slices only supports a:-1 with step 1") | 244 raise ValueError(b"deleting slices only supports a:-1 with step 1") |
239 for r in pycompat.xrange(i.start, len(self)): | 245 for r in pycompat.xrange(i.start, len(self)): |
240 del self.nodemap[self[r][7]] | 246 del self._nodemap[self[r][7]] |
241 super(revlogoldindex, self).__delitem__(i) | 247 super(revlogoldindex, self).__delitem__(i) |
242 | 248 |
243 def clearcaches(self): | 249 def clearcaches(self): |
244 self.__dict__.pop('nodemap', None) | 250 self.__dict__.pop('_nodemap', None) |
245 | 251 |
246 def __getitem__(self, i): | 252 def __getitem__(self, i): |
247 if i == -1: | 253 if i == -1: |
248 return (0, 0, 0, -1, -1, -1, -1, nullid) | 254 return (0, 0, 0, -1, -1, -1, -1, nullid) |
249 return list.__getitem__(self, i) | 255 return list.__getitem__(self, i) |
577 except (ValueError, IndexError): | 583 except (ValueError, IndexError): |
578 raise error.RevlogError( | 584 raise error.RevlogError( |
579 _(b"index %s is corrupted") % self.indexfile | 585 _(b"index %s is corrupted") % self.indexfile |
580 ) | 586 ) |
581 self.index, self._chunkcache = d | 587 self.index, self._chunkcache = d |
582 self.nodemap = self.index.nodemap | |
583 if not self._chunkcache: | 588 if not self._chunkcache: |
584 self._chunkclear() | 589 self._chunkclear() |
585 # revnum -> (chain-length, sum-delta-length) | 590 # revnum -> (chain-length, sum-delta-length) |
586 self._chaininfocache = {} | 591 self._chaininfocache = {} |
587 # revlog header -> revlog compressor | 592 # revlog header -> revlog compressor |
648 | 653 |
649 def revs(self, start=0, stop=None): | 654 def revs(self, start=0, stop=None): |
650 """iterate over all rev in this revlog (from start to stop)""" | 655 """iterate over all rev in this revlog (from start to stop)""" |
651 return storageutil.iterrevs(len(self), start=start, stop=stop) | 656 return storageutil.iterrevs(len(self), start=start, stop=stop) |
652 | 657 |
653 @util.propertycache | 658 @property |
654 def nodemap(self): | 659 def nodemap(self): |
660 msg = ( | |
661 "revlog.nodemap is deprecated, " | |
662 "use revlog.index.[has_node|rev|get_rev]" | |
663 ) | |
664 util.nouideprecwarn(msg, b'5.3', stacklevel=2) | |
655 return self.index.nodemap | 665 return self.index.nodemap |
656 | 666 |
657 @property | 667 @property |
658 def _nodecache(self): | 668 def _nodecache(self): |
659 msg = "revlog._nodecache is deprecated, use revlog.index.nodemap" | 669 msg = "revlog._nodecache is deprecated, use revlog.index.nodemap" |