comparison mercurial/dagop.py @ 35275:b4b328ea6175

dagop: put start fctx into visit dict of filectxancestors() Prepares for multiple start revisions/files.
author Yuya Nishihara <yuya@tcha.org>
date Thu, 22 Sep 2016 18:18:56 +0900
parents 2b348dc3239a
children 205c3c6c1a51
comparison
equal deleted inserted replaced
35274:2b348dc3239a 35275:b4b328ea6175
82 rev = fctx.rev() 82 rev = fctx.rev()
83 if rev not in visit: 83 if rev not in visit:
84 visit[rev] = set() 84 visit[rev] = set()
85 visit[rev].add(fctx) 85 visit[rev].add(fctx)
86 86
87 c = fctx
88 if followfirst: 87 if followfirst:
89 cut = 1 88 cut = 1
90 else: 89 else:
91 cut = None 90 cut = None
92 91
93 yield c 92 addvisit(fctx)
94 while True: 93 while visit:
95 for parent in c.parents()[:cut]:
96 addvisit(parent)
97 if not visit:
98 break
99 rev = max(visit) 94 rev = max(visit)
100 c = visit[rev].pop() 95 c = visit[rev].pop()
101 if not visit[rev]: 96 if not visit[rev]:
102 del visit[rev] 97 del visit[rev]
103 yield c 98 yield c
99 for parent in c.parents()[:cut]:
100 addvisit(parent)
104 101
105 def _genrevancestors(repo, revs, followfirst, startdepth, stopdepth, cutfunc): 102 def _genrevancestors(repo, revs, followfirst, startdepth, stopdepth, cutfunc):
106 if followfirst: 103 if followfirst:
107 cut = 1 104 cut = 1
108 else: 105 else: