with backend.lifter(arg):
backend.diff(diffspec1, diffspec2, diffopts, arg)
-def list_tags(*args):
- (revspec, args) = preamble("tag", args)
- if revspec is not None:
- croak("can't accept a revision-spec when deleting tags.")
- width = screenwidth()
- for arg in args:
- master = History(arg)
- sys.stdout.write("= %s %s\n" % (arg, ((width - len(arg) - 5) * "=")))
- for (key, value) in master.symbols.items():
- if not master.isbranch(arg):
- sys.stdout.write("%4d\t%s\n" % (master.rcs_to_revno(value),key))
-
-def delete_tags(args):
- if not args:
- croak("deleting tags requires a tagname argument")
- tagname = args.pop(0)
- (revspec, args) = preamble("tag", args)
- if revspec is not None:
- croak("can't accept a revision-spec when deleting tags.")
- for arg in args:
- master = History(arg)
- if tagname not in master.symbols:
- croak("%s is not a tag in %s" % (tagname, arg))
- else:
- with backend.lifter(arg):
- backend.delete_tag(tagname, arg)
- if not quiet and len(args) > 1:
- announce("tag %s removed from %s" % (tagname, arg))
-
-def tag_helper(args, legend, list_tags, delete_tags, set_method):
+def tag_helper(args, legend, delete_method, set_method):
"Dispatch to handlers for tag and branch manipulation."
if not os.path.exists(repodir):
croak("repository subdirectory %s does not exist" % repodir)
args = list(args)
if not args:
- list_tags()
- return
+ args = ["list"] + args
if args[0] == '--':
args.pop(0)
else:
if args[0] in ("-d", "del", "delete"):
- delete_tags(args[1:])
- return
+ args.pop(0)
+ if not args:
+ croak("%s deletion requires a name argument" % legend)
+ name = args.pop(0)
+ (revspec, args) = preamble(legend, args)
+ if revspec is not None:
+ croak("can't accept a revision-spec when %s deleting." % legend)
+ for arg in args:
+ master = History(arg)
+ if name not in master.symbols:
+ croak("%s is not a %s in %s" % (name, legend, arg))
+ else:
+ with backend.lifter(arg):
+ delete_method(name, arg)
+ if not quiet and len(args) > 1:
+ announce("tag %s removed from %s" % (name, arg))
+ return
if args[0] in ("-l", "list"):
- list_tags(*args[1:])
+ args.pop(0)
+ (revspec, args) = preamble(legend, args)
+ if revspec is not None:
+ croak("can't accept a revision-spec when %s listing." % legend)
+ width = screenwidth()
+ for arg in args:
+ master = History(arg)
+ sys.stdout.write("= %s %s\n" % (arg, ((width - len(arg) - 5) * "=")))
+ for (key, value) in master.symbols.items():
+ # FIXME: sort so trunk is top
+ if master.isbranch(arg) == (legend == "branch"):
+ sys.stdout.write("%4d\t%s\n" % (master.rcs_to_revno(value),key))
return
- # set_tags case
if not args:
croak("%s setting requires a name argument" % legend)
name = args.pop(0)
def tag_method(*args):
"Inspect, create, and delete tags."
- tag_helper(args, "tag", list_tags, delete_tags, backend.set_tag)
+ tag_helper(args, "tag", backend.delete_tag, backend.set_tag)
def branch_method(*args):
"Inspect, create, and delete branch."