mercurial/changelog.py
changeset 17677 5c89e7fa5bc2
parent 17424 e7cfe3587ea4
child 17810 2894d180afa1
equal deleted inserted replaced
17676:f87683a1b02a 17677:5c89e7fa5bc2
   118             self.version &= ~revlog.REVLOGGENERALDELTA
   118             self.version &= ~revlog.REVLOGGENERALDELTA
   119             self._generaldelta = False
   119             self._generaldelta = False
   120         self._realopener = opener
   120         self._realopener = opener
   121         self._delayed = False
   121         self._delayed = False
   122         self._divert = False
   122         self._divert = False
       
   123         self.filteredrevs = ()
       
   124 
       
   125     def tip(self):
       
   126         """filtered version of revlog.tip"""
       
   127         for i in xrange(len(self) -1, -2, -1):
       
   128             if i not in self.filteredrevs:
       
   129                 return self.node(i)
       
   130 
       
   131     def __iter__(self):
       
   132         """filtered version of revlog.__iter__"""
       
   133         for i in xrange(len(self)):
       
   134             if i not in self.filteredrevs:
       
   135                 yield i
       
   136 
       
   137     def revs(self, start=0, stop=None):
       
   138         """filtered version of revlog.revs"""
       
   139         for i in super(changelog, self).revs(start, stop):
       
   140             if i not in self.filteredrevs:
       
   141                 yield i
       
   142 
       
   143     @util.propertycache
       
   144     def nodemap(self):
       
   145         # XXX need filtering too
       
   146         self.rev(self.node(0))
       
   147         return self._nodecache
       
   148 
       
   149     def hasnode(self, node):
       
   150         """filtered version of revlog.hasnode"""
       
   151         try:
       
   152             i = self.rev(node)
       
   153             return i not in self.filteredrevs
       
   154         except KeyError:
       
   155             return False
       
   156 
       
   157     def headrevs(self):
       
   158         if self.filteredrevs:
       
   159             # XXX we should fix and use the C version
       
   160             return self._headrevs()
       
   161         return super(changelog, self).headrevs()
       
   162 
       
   163     def strip(self, *args, **kwargs):
       
   164         # XXX make something better than assert
       
   165         # We can't expect proper strip behavior if we are filtered.
       
   166         assert not self.filteredrevs
       
   167         super(changelog, self).strip(*args, **kwargs)
       
   168 
       
   169     def rev(self, node):
       
   170         """filtered version of revlog.rev"""
       
   171         r = super(changelog, self).rev(node)
       
   172         if r in self.filteredrevs:
       
   173             raise error.LookupError(node, self.indexfile, _('no node'))
       
   174         return r
       
   175 
       
   176     def node(self, rev):
       
   177         """filtered version of revlog.node"""
       
   178         if rev in self.filteredrevs:
       
   179             raise IndexError(rev)
       
   180         return super(changelog, self).node(rev)
       
   181 
       
   182     def linkrev(self, rev):
       
   183         """filtered version of revlog.linkrev"""
       
   184         if rev in self.filteredrevs:
       
   185             raise IndexError(rev)
       
   186         return super(changelog, self).linkrev(rev)
       
   187 
       
   188     def parentrevs(self, rev):
       
   189         """filtered version of revlog.parentrevs"""
       
   190         if rev in self.filteredrevs:
       
   191             raise IndexError(rev)
       
   192         return super(changelog, self).parentrevs(rev)
       
   193 
       
   194     def flags(self, rev):
       
   195         """filtered version of revlog.flags"""
       
   196         if rev in self.filteredrevs:
       
   197             raise IndexError(rev)
       
   198         return super(changelog, self).flags(rev)
   123 
   199 
   124     def delayupdate(self):
   200     def delayupdate(self):
   125         "delay visibility of index updates to other readers"
   201         "delay visibility of index updates to other readers"
   126         self._delayed = True
   202         self._delayed = True
   127         self._divert = (len(self) == 0)
   203         self._divert = (len(self) == 0)