]> thyrsus.com Git - src.git/commitdiff
Code lifting preparatory to optimization.
authorEric S. Raymond <esr@thyrsus.com>
Wed, 12 Nov 2014 19:57:19 +0000 (14:57 -0500)
committerEric S. Raymond <esr@thyrsus.com>
Wed, 12 Nov 2014 19:57:19 +0000 (14:57 -0500)
src

diff --git a/src b/src
index 4ebc06c5591aef05ae056f401a6ea034825dea58..071d2ae0a97b3c9f36d44763399f0d9745001a2e 100755 (executable)
--- a/src
+++ b/src
@@ -190,12 +190,16 @@ class History:
         p = s = self.native_to_revno(self.current())
         selection = [self.by_revno(p)]
         while True:
-            p = backend.pred(p, self)
+            rev = self.revno_to_native(p)
+            rev = backend.pred(rev)
+            p = self.native_to_revno(rev)
             if p is None:
                 break
             selection = [self.by_revno(p)] + selection
         while True:
-            s = backend.succ(s, self)
+            rev = self.revno_to_native(s)
+            rev = backend.succ(rev)
+            s = self.native_to_revno(rev)
             if s is None:
                 break
             selection.append(self.by_revno(s))
@@ -206,7 +210,9 @@ class History:
         "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)
+            rev = self.revno_to_native(s)
+            rev = backend.succ(rev)
+            s = self.native_to_revno(rev)
             if s is None:
                 croak("%s is not an ancestor of %s" % (start, end))
             selection.append(self.by_revno(s))
@@ -219,7 +225,9 @@ class History:
         "Return the tip revision of the current branch."
         s = self.native_to_revno(self.current())
         while True:
-            nxt = backend.succ(s, self)
+            rev = self.revno_to_native(s)
+            rev = backend.succ(rev)
+            nxt = self.native_to_revno(rev)
             if nxt is None:
                 return self.by_revno(s)
             else:
@@ -453,7 +461,9 @@ class CommandContext:
             self.seq = [self.start]
             s = self.start
             while True:
-                s = backend.succ(s, metadata)
+                rev = self.revno_to_native(s)
+                next = backend.succ(s)
+                s = self.native_to_revno(rev)
                 if s is None:
                     croak("%s is not an ancestor of %s" % (self.start, self.end))
                 self.seq.append(s)
@@ -549,16 +559,16 @@ def amend_method(*args):
            croak("%s is not registered." % arg)
     comment.edit()
     for arg in ctx.args:
-       metadata = History(arg)
-       ctx.resolve(metadata)
-       if ctx.is_empty():
-           ctx.start = metadata.tip().revno
-       with backend.lifter(arg):
-           backend.amend(arg,
-                         metadata.revno_to_native(ctx.start),
-                         comment.content())
-       if not quiet and len(args) > 1:
-           announce("%s : %d" % (arg, len(metadata)))
+        metadata = History(arg)
+        ctx.resolve(metadata)
+        if ctx.is_empty():
+            ctx.start = metadata.tip().revno
+        with backend.lifter(arg):
+            backend.amend(arg,
+                          metadata.revno_to_native(ctx.start),
+                          comment.content())
+    if not quiet and len(args) > 1:
+        announce("%s : %d" % (arg, len(metadata)))
 
 def list_method(*args):
     "Generate a summary listing of commits, one line per commit."
@@ -995,23 +1005,20 @@ class RCS:
     def joinrev(self, rev):
         "Numeric tuple to RC revision."
         return ".".join([str(d) for d in rev])
-    def pred(self, revno, metadata):
-        "Our predecessor on the branch (1-origin)."
-        rev = metadata.revno_to_native(revno)
+    def pred(self, rev):
+        "Our predecessor. Walks up parent branch."
         n = self.splitrev(rev)
         if n[-1] > 1:
             n[-1] -= 1
             rev = self.joinrev(n)
         else:
             rev = self.joinrev(n[:-2])
-        return metadata.native_to_revno(rev)
-    def succ(self, revno, metadata):
-        "Our successor on the current branch (1-origin)."
-        rev = metadata.revno_to_native(revno)
+        return rev
+    def succ(self, rev):
+        "Our successor."
         n = self.splitrev(rev)
         n[-1] += 1
-        rev = self.joinrev(n)
-        return metadata.native_to_revno(rev)
+        return self.joinrev(n)
     def branch_to_base(self, revid):
         "Go from a branch ID sticky tag to the revision it was based on."
         return self.joinrev(self.splitrev(revid)[:-2])