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