From: Eric S. Raymond Date: Wed, 12 Nov 2014 00:26:13 +0000 (-0500) Subject: Another helper function we'll need for resolving M..N. X-Git-Tag: 0.5~11 X-Git-Url: http://thyrsus.com/gitweb/?a=commitdiff_plain;h=2862d4f2dbd1a008bc223e4ae596b5280f03fe78;p=src.git Another helper function we'll need for resolving M..N. Regression test passes. --- diff --git a/src b/src index 6e7004d..6bd2b6b 100755 --- a/src +++ b/src @@ -185,7 +185,7 @@ class History: except IndexError: croak("no current revision? src checkout to recover") def current_branch(self, reversed=False): - "Return a list of revnos that are descendants or ancestors of current." + "Return a list of items that are descendants or ancestors of current." p = s = self.rcs_to_revno(self.current()) selection = [self.by_revno(p)] while True: @@ -201,6 +201,19 @@ class History: if reversed: selection.reverse() return selection + def branch_restrict_range(self, start, end, reversed= False): + "Return a list of items that are descendants of start, up to end." + selection = [self.by_revno(s)] + while True: + s = backend.succ(s, self) + if s is None: + croak("%s is not an ancestor of %s" % (start, end)) + selection.append(self.by_revno(s)) + if s == end: + break + if reversed: + selection.reverse() + return selection def tip(self): return self.revlist[0] def rcs_to_revno(self, revision):