diff -r 53581e220ba3 -r 642433629e20 mercurial/revlog.py --- a/mercurial/revlog.py Fri Nov 08 10:01:10 2019 +0100 +++ b/mercurial/revlog.py Sat Nov 09 05:54:22 2019 +0100 @@ -217,6 +217,13 @@ self.nodemap[tup[7]] = len(self) super(revlogoldindex, self).append(tup) + def __delitem__(self, i): + if not isinstance(i, slice) or not i.stop == -1 or i.step is not None: + raise ValueError(b"deleting slices only supports a:-1 with step 1") + for r in pycompat.xrange(i.start, len(self)): + del self.nodemap[self[r][7]] + super(revlogoldindex, self).__delitem__(i) + def clearcaches(self): self.__dict__.pop('nodemap', None) @@ -2431,8 +2438,6 @@ self._revisioncache = None self._chaininfocache = {} self._chunkclear() - for x in pycompat.xrange(rev, len(self)): - del self.nodemap[self.node(x)] del self.index[rev:-1] self._nodepos = None