mercurial/context.py
changeset 3403 1a437b0f4902
parent 3402 372999405787
child 3436 357b5589dc62
equal deleted inserted replaced
3402:372999405787 3403:1a437b0f4902
   252                 if r:
   252                 if r:
   253                     pl[0] = (r[0], getlog(r[0]).rev(r[1]))
   253                     pl[0] = (r[0], getlog(r[0]).rev(r[1]))
   254 
   254 
   255             return [ getctx(p, n) for p, n in pl if n != -1 ]
   255             return [ getctx(p, n) for p, n in pl if n != -1 ]
   256 
   256 
       
   257         # use linkrev to find the first changeset where self appeared
       
   258         if self.rev() != self._filelog.linkrev(self._filenode):
       
   259             base = self.filectx(self.filerev())
       
   260         else:
       
   261             base = self
       
   262 
   257         # find all ancestors
   263         # find all ancestors
   258         needed = {self: 1}
   264         needed = {base: 1}
   259         visit = [self]
   265         visit = [base]
   260         files = [self._path]
   266         files = [base._path]
   261         while visit:
   267         while visit:
   262             f = visit.pop(0)
   268             f = visit.pop(0)
   263             for p in parents(f):
   269             for p in parents(f):
   264                 if p not in needed:
   270                 if p not in needed:
   265                     needed[p] = 1
   271                     needed[p] = 1