Mercurial > public > mercurial-scm > hg
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: |