[patch 08/10] Add revlog.reachable to find a graph of ancestors for
a given rev
Chris Mason
mason at suse.com
Tue Aug 9 12:43:01 CDT 2005
# HG changeset patch
# User mason at suse.com
Add revlog.reachable to find a graph of ancestors for a given rev
Index: mine/mercurial/revlog.py
===================================================================
--- mine.orig/mercurial/revlog.py
+++ mine/mercurial/revlog.py
@@ -176,6 +176,28 @@ class revlog:
def end(self, rev): return self.start(rev) + self.length(rev)
def base(self, rev): return self.index[rev][2]
+ def reachable(self, rev, stop=None):
+ reachable = {}
+ visit = [rev]
+ reachable[rev] = 1
+ if stop:
+ stopn = self.rev(stop)
+ else:
+ stopn = 0
+ while visit:
+ n = visit.pop(0)
+ if n == stop:
+ continue
+ if n == nullid:
+ continue
+ for p in self.parents(n):
+ if self.rev(p) < stopn:
+ continue
+ if p not in reachable:
+ reachable[p] = 1
+ visit.append(p)
+ return reachable
+
def heads(self, stop=None):
p = {}
h = []
--
More information about the Mercurial
mailing list