comparison mercurial/revlog.py @ 1074:55bf5cfde69e

Add revlog.reachable to find a graph of ancestors for a given rev
author mason@suse.com
date Fri, 26 Aug 2005 19:19:35 -0700
parents 7b35a980b982
children 30974cf73435
comparison
equal deleted inserted replaced
1073:7b35a980b982 1074:55bf5cfde69e
168 def start(self, rev): return self.index[rev][0] 168 def start(self, rev): return self.index[rev][0]
169 def length(self, rev): return self.index[rev][1] 169 def length(self, rev): return self.index[rev][1]
170 def end(self, rev): return self.start(rev) + self.length(rev) 170 def end(self, rev): return self.start(rev) + self.length(rev)
171 def base(self, rev): return self.index[rev][2] 171 def base(self, rev): return self.index[rev][2]
172 172
173 def reachable(self, rev, stop=None):
174 reachable = {}
175 visit = [rev]
176 reachable[rev] = 1
177 if stop:
178 stopn = self.rev(stop)
179 else:
180 stopn = 0
181 while visit:
182 n = visit.pop(0)
183 if n == stop:
184 continue
185 if n == nullid:
186 continue
187 for p in self.parents(n):
188 if self.rev(p) < stopn:
189 continue
190 if p not in reachable:
191 reachable[p] = 1
192 visit.append(p)
193 return reachable
194
173 def heads(self, stop=None): 195 def heads(self, stop=None):
174 p = {} 196 p = {}
175 h = [] 197 h = []
176 stoprev = 0 198 stoprev = 0
177 if stop and stop in self.nodemap: 199 if stop and stop in self.nodemap: