From: Eric S. Raymond Date: Tue, 11 Nov 2014 13:16:21 +0000 (-0500) Subject: succ() and pred() - basic tools for branch navigation. X-Git-Tag: 0.5~21 X-Git-Url: http://thyrsus.com/gitweb/?a=commitdiff_plain;h=ea25e55b7e73581b4b79f7c476946a4f32b4ad8b;p=src.git succ() and pred() - basic tools for branch navigation. Regression test passes. --- 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