From: Eric S. Raymond Date: Wed, 12 Nov 2014 19:57:19 +0000 (-0500) Subject: Code lifting preparatory to optimization. X-Git-Tag: 0.6~20 X-Git-Url: http://thyrsus.com/gitweb/?a=commitdiff_plain;h=3f12d6d6f243a9e636782d6d45242a95dc4f94f4;p=src.git Code lifting preparatory to optimization. --- diff --git a/src b/src index 4ebc06c..071d2ae 100755 --- 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])