mercurial/revlog.py
changeset 902 c749ca37aed1
parent 896 01215ad04283
child 1062 6d5a62a549fa
equal deleted inserted replaced
901:120cba94d5aa 902:c749ca37aed1
   166     def start(self, rev): return self.index[rev][0]
   166     def start(self, rev): return self.index[rev][0]
   167     def length(self, rev): return self.index[rev][1]
   167     def length(self, rev): return self.index[rev][1]
   168     def end(self, rev): return self.start(rev) + self.length(rev)
   168     def end(self, rev): return self.start(rev) + self.length(rev)
   169     def base(self, rev): return self.index[rev][2]
   169     def base(self, rev): return self.index[rev][2]
   170 
   170 
   171     def heads(self):
   171     def heads(self, stop=None):
   172         p = {}
   172         p = {}
   173         h = []
   173         h = []
       
   174         stoprev = 0
       
   175         if stop and stop in self.nodemap:
       
   176             stoprev = self.rev(stop)
       
   177             
   174         for r in range(self.count() - 1, -1, -1):
   178         for r in range(self.count() - 1, -1, -1):
   175             n = self.node(r)
   179             n = self.node(r)
   176             if n not in p:
   180             if n not in p:
   177                 h.append(n)
   181                 h.append(n)
       
   182             if n == stop:
       
   183                 break
       
   184             if r < stoprev:
       
   185                 break
   178             for pn in self.parents(n):
   186             for pn in self.parents(n):
   179                 p[pn] = 1
   187                 p[pn] = 1
   180         return h
   188         return h
   181 
   189 
   182     def children(self, node):
   190     def children(self, node):