]> thyrsus.com Git - src.git/commitdiff
Another helper function we'll need for resolving M..N.
authorEric S. Raymond <esr@thyrsus.com>
Wed, 12 Nov 2014 00:26:13 +0000 (19:26 -0500)
committerEric S. Raymond <esr@thyrsus.com>
Wed, 12 Nov 2014 00:26:13 +0000 (19:26 -0500)
Regression test passes.

src

diff --git a/src b/src
index 6e7004df8f72b67686b2544e2e065658ee1754dc..6bd2b6b20e11b15776c1288ab6d5d6be91d6e9e3 100755 (executable)
--- 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):