]> thyrsus.com Git - src.git/commitdiff
src branch syntax is implemented, now we need to write two methods.
authorEric S. Raymond <esr@thyrsus.com>
Sun, 9 Nov 2014 16:22:05 +0000 (11:22 -0500)
committerEric S. Raymond <esr@thyrsus.com>
Sun, 9 Nov 2014 16:22:05 +0000 (11:22 -0500)
Regression test passes.

src

diff --git a/src b/src
index e11add6a6d93822a8321c67621bb381fa18ff003..e4da32197fa4f66d15a17ec22d72c6bf812a861a 100755 (executable)
--- a/src
+++ b/src
@@ -630,7 +630,7 @@ def tag_helper(args, legend, delete_method, set_method):
                     with backend.lifter(arg):
                         delete_method(name, arg)
                     if not quiet and len(args) > 1:
-                        announce("tag %s removed from %s" % (name, arg))
+                        announce("%s %s removed from %s" % (legend, name, arg))
                 return
         if args[0] in ("-l", "list"):
             args.pop(0)
@@ -641,8 +641,11 @@ def tag_helper(args, legend, delete_method, set_method):
             for arg in args:
                 master = History(arg)
                 sys.stdout.write("= %s %s\n" % (arg, ((width - len(arg) - 5) * "=")))
+                if legend == "branch":
+                    sys.stdout.write("%s\n" % metadata.branch)
                 for (key, value) in master.symbols.items():
-                    # FIXME: sort so trunk is top
+                    if legend == "branch" and key == branch.metadata:
+                        continue
                     if master.isbranch(arg) == (legend == "branch"):
                         sys.stdout.write("%4d\t%s\n" % (master.rcs_to_revno(value),key))
             return
@@ -651,13 +654,15 @@ def tag_helper(args, legend, delete_method, set_method):
     name = args.pop(0)
     (revspec, args) = preamble("tag", args)
     for arg in args:
-        master = History(arg)
-        revspec = master.resolve(revspec)
+        metadata = History(arg)
+        revspec = metadata.resolve(revspec)
+        if name in metadata.symbols:
+            croak("%s %s already set." % (legend, name))
         if revspec is None:
-            revision = master.tip().revision
-            revno = master.tip().revno
+            revision = metadata.tip().revision
+            revno = metadata.tip().revno
         elif len(revspec) == 1:
-            revision = master.revno_to_rcs(revspec[0])
+            revision = metadata.revno_to_rcs(revspec[0])
             revno = revspec[0]
         else:
             croak("can't accept a range when %s setting" % legend)
@@ -671,46 +676,8 @@ def tag_method(*args):
     tag_helper(args, "tag", backend.delete_tag, backend.set_tag)
 
 def branch_method(*args):
-    "Inspect, create, and delete branch."
-    if not os.path.exists(repodir):
-        croak("repository subdirectory %s does not exist" % repodir)
-    (revspec, args) = preamble("branch", args)
-    if len(args) == 1:
-        metadata = History(args[0])
-        sys.stdout.write("%s\n" % metadata.branch)
-        for branchname in metadata.symbols:
-            if metadata.isbranch(key):
-                if key != metadata.branch:
-                    sys.stdout.write("%s\n" % key)
-        return
-    deleteflag = False 
-    if args[0] == '--':
-        args.pop(0)
-    elif args[0] in ("delete", "del", "-d"):
-        deleteflag = True
-        args.pop(0)
-    if not args:
-        croak("branch requires at least a tagname argument")
-    branchname = args.pop(0)
-    if not deleteflag:
-        if args:
-            revspec = metadata.resolve(args[0])
-            if revspec[0] == revspec[1]:
-                revspec = master.revno_to_rcs(revspec[0])
-            else:
-                croak("branch cannot accept a range")
-    # We have a tag name, and either the delete flag is on or
-    # we have a native revision.  Remaining args are files.
-    for arg in args:
-        metadata = History(arg)
-        if deleteflag:
-            if branchname in metadata.symbols:
-                backend.delete_tag(branchname, arg)
-                # FIXME: delete all the branch revisions
-                if len(args) and not quiet:
-                    announce("branch %s removed from %s" % (branchname, arg))
-            else:
-                croak("%s is not a branch in %s" % (branchname, arg))
+    "Inspect, create, and delete branches."
+    tag_helper(args, "branch", backend.delete_branch, backend.set_branch)
 
 def filecmd(legend, hook, args):
     (revspec, args) = preamble(legend, args)
@@ -901,6 +868,12 @@ class RCS:
     def set_tag(self, tagname, revision, arg):
         "Set a specified tag."
         do_or_die("rcs -N{0}:{1} {2}".format(tagname, revision, arg))
+    def delete_branch(self, branchname, arg):
+        "Delete a specified branch."
+        croak("branch deletion is not yet supported")
+    def set_branch(self, branchname, revision, arg):
+        "Set a specified branch."
+        croak("branch creation is not yet supported")
     def move(self, source, target):
         "Move a file and its history."
         do_or_die("mv {0} {1} && mv {2} {3}".format(source, target,