From: Eric S. Raymond Date: Sat, 8 Nov 2014 17:29:49 +0000 (-0500) Subject: Full backend encapsulation. X-Git-Tag: 0.2~10 X-Git-Url: http://thyrsus.com/gitweb/?a=commitdiff_plain;h=977741ecc6a382a2d3b1d0f4e99022d8624b0dbd;p=src.git Full backend encapsulation. --- diff --git a/src b/src index 8879636..be9acc9 100755 --- a/src +++ b/src @@ -438,7 +438,7 @@ def commit_method(*args): if not comment.endswith("\n"): comment += "\n" comment = comment.replace("'", r"\'") - with RCS.lifter(arg): + with backend.lifter(arg): backend.checkin(arg, comment) if not quiet and len(args) > 1: announce("%s -> %d" % (arg, len(metadata))) @@ -492,7 +492,7 @@ def checkout_method(*args): croak("%s has only %d revisions" % (arg, len(master))) else: revision = master[len(master) - revspec[0]].revision - with RCS.lifter(arg): + with backend.lifter(arg): backend.checkout(arg, revision) if not quiet and len(args) > 1: announce("%s <- %d" % (arg, revspec[0])) @@ -505,7 +505,7 @@ def cat_method(*args): revspec = master.resolve(revspec) if revspec is None: revspec = [master.tip().revno] - with RCS.lifter(arg): + with backend.lifter(arg): for item in master: if item.revno in revspec: backend.cat(arg, item.revision) @@ -524,7 +524,7 @@ def diff_method(*args): diffspec1 += master.revno_to_rcs(revspec[0]) if len(revspec) > 1: diffspec2 += master.revno_to_rcs(revspec[1]) - with RCS.lifter(arg): + with backend.lifter(arg): backend.diff(diffspec1, diffspec2, diffopts, arg) def list_tags(*args): @@ -551,7 +551,7 @@ def delete_tags(args): if tagname not in master.symbols: croak("%s is not a tag in %s" % (tagname, arg)) else: - with RCS.lifter(arg): + with backend.lifter(arg): backend.delete_tag(tagname, arg) if not quiet and len(args) > 1: announce("tag %s removed from %s" % (tagname, arg)) @@ -572,7 +572,7 @@ def set_tags(args): revno = revspec[0] else: croak("can't accept a range when setting tags.") - with RCS.lifter(arg): + with backend.lifter(arg): backend.set_tag(tagname, revision, arg) if not quiet and len(args) > 1: announce("tag %s = %s in " % (tagname, revno, arg)) @@ -628,7 +628,7 @@ def fast_export_method(*args): if revspec is None: revspec = 1 revrange = range(revspec, len(metadata)+1) - with RCS.lifter(arg): + with backend.lifter(arg): markmap = {} last_commit_mark = 0 if len(args) == 1: @@ -737,7 +737,7 @@ dispatch = { class RCS: "Encapsulate RCS back end methods." - class lifter: + class RCSLifter: "Temporatily lift a master to the working directory." def __init__(self, name): self.name = name @@ -746,6 +746,8 @@ class RCS: def __exit__(self, extype, value, traceback_unused): do_or_die("mv {0},v {1}".format(self.name, repodir)) return True + def lifter(self, name): + return RCS.RCSLifter(name) def master(self, arg): return os.path.join(repodir, arg + ",v") def add(self, arg): @@ -785,7 +787,6 @@ class RCS: diffspec2 = "-r" + diffspec1 do_or_die("rcsdiff -q {0} {1} {2} || :".format(diffspec, diffopts, arg),loud=True) - if __name__ == "__main__": command = list(sys.argv[1:]) explicit = False