mercurial/pure/parsers.py
changeset 51969 22da1dc97281
parent 51863 f4733654f144
child 51979 609700e5d8df
equal deleted inserted replaced
51968:8060257fd918 51969:22da1dc97281
   694         p = revlog_constants.INDEX_ENTRY_V1.pack(*entry[:8])
   694         p = revlog_constants.INDEX_ENTRY_V1.pack(*entry[:8])
   695         if rev == 0:
   695         if rev == 0:
   696             p = p[revlog_constants.INDEX_HEADER.size :]
   696             p = p[revlog_constants.INDEX_HEADER.size :]
   697         return p
   697         return p
   698 
   698 
       
   699     def headrevs(self, excluded_revs=None):
       
   700         count = len(self)
       
   701         if not count:
       
   702             return [nullrev]
       
   703         # we won't iter over filtered rev so nobody is a head at start
       
   704         ishead = [0] * (count + 1)
       
   705         revs = range(count)
       
   706         if excluded_revs is not None:
       
   707             revs = (r for r in revs if r not in excluded_revs)
       
   708 
       
   709         for r in revs:
       
   710             ishead[r] = 1  # I may be an head
       
   711             e = self[r]
       
   712             ishead[e[5]] = ishead[e[6]] = 0  # my parent are not
       
   713         return [r for r, val in enumerate(ishead) if val]
       
   714 
   699 
   715 
   700 class IndexObject(BaseIndexObject):
   716 class IndexObject(BaseIndexObject):
   701     def __init__(self, data):
   717     def __init__(self, data):
   702         assert len(data) % self.entry_size == 0, (
   718         assert len(data) % self.entry_size == 0, (
   703             len(data),
   719             len(data),