]> thyrsus.com Git - src.git/commitdiff
Implemented rename with now new methods.
authorEric S. Raymond <esr@thyrsus.com>
Sun, 9 Nov 2014 17:29:22 +0000 (12:29 -0500)
committerEric S. Raymond <esr@thyrsus.com>
Sun, 9 Nov 2014 17:29:22 +0000 (12:29 -0500)
src

diff --git a/src b/src
index 0d31e1d1895eede5342f49b1d681a4ba18ea1496..8965e609a861bce0a0467f38fce09dbb76fb6c6d 100755 (executable)
--- a/src
+++ b/src
@@ -658,10 +658,25 @@ def tag_helper(args, legend, delete_method, set_method):
                     if master.isbranch(arg) == (legend == "branch"):
                         sys.stdout.write("%4d\t%s\n" % (master.rcs_to_revno(value),key))
             return
+        if args[0] in ("-r", "rename"):
+            args.pop(0)
+            if name not in metadata.symbols:
+                croak("cannot rename nonexistent %s" % legend)
+            if not args:
+                croak("rename requires a second name argement")
+            newname = args.pop(0)
+            if newname in metadata.symbols:
+                croak("cannot rename to existing %s" % legend)
+            (revspec, args) = preamble(legend, args)
+            if revspec is not None:
+                croak("can't accept a revision-spec when %s renaming." % legend)
+            # In the case of a branch, we want to change only the tag reference.
+            backend.tag_set(newname, self.symbols[name], arg)
+            backend.tag_delete(name, arg)
     if not args:
         croak("%s setting requires a name argument" % legend)
     name = args.pop(0)
-    (revspec, args) = preamble("tag", args)
+    (revspec, args) = preamble(legend, args)
     for arg in args:
         metadata = History(arg)
         revspec = metadata.resolve(revspec)