]> thyrsus.com Git - src.git/commitdiff
Full backend encapsulation.
authorEric S. Raymond <esr@thyrsus.com>
Sat, 8 Nov 2014 17:29:49 +0000 (12:29 -0500)
committerEric S. Raymond <esr@thyrsus.com>
Sat, 8 Nov 2014 17:29:49 +0000 (12:29 -0500)
src

diff --git a/src b/src
index 887963666e8490e14551690c28ed60c508b7b568..be9acc946acef4623b02214c62130be4aa47acb6 100755 (executable)
--- 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