From ea25e55b7e73581b4b79f7c476946a4f32b4ad8b Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Tue, 11 Nov 2014 08:16:21 -0500 Subject: [PATCH] succ() and pred() - basic tools for branch navigation. Regression test passes. --- src | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src b/src index 3fd971f..a1ca616 100755 --- a/src +++ b/src @@ -936,6 +936,31 @@ class RCS: return os.path.getsize(self.master(arg)) > 105 def workfile(self, arg): return arg[:-2] + def pred(self, revno, metadata): + "Our predecessor on the branch (0-origin)." + n = [int(d) for d in rev.split(".")] + if n[-1] > 1: + n[-1] += 1 + rev = ".".join(n) + else: + rev = ".".join(n[:-2]) + # Prevent O(n**2) blowup when enumerating these + if revno >= 2 and metadata[revno - 2].revision == rev: + return revno - 1 + for (i, item) in enumerate(metadata.revlist): + if item.revision == rev: + return i + return None + def succ(self, revno, metadata): + "Our successor on the current branch (0-origin)." + rev = metatada[revno - 1].revision + n = [int(d) for d in rev.split(".")] + n[-1] += 1 + rev = ".".join(n) + for (i, item) in enumerate(metadata.revlist): + if item.revision == rev: + return i + return None def add(self, arg): "Register a file" # Key choices here: -b suppresses all keyword expansion, -U sets -- 2.43.0