From 972a2c13864ddf78374e9c54633bbb248699ea50 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sun, 9 Nov 2014 09:11:27 -0500 Subject: [PATCH] Tag-command refactoring is done. --- src | 69 ++++++++++++++++++++++++++++--------------------------------- 1 file changed, 32 insertions(+), 37 deletions(-) diff --git a/src b/src index 2a7b054..e11add6 100755 --- a/src +++ b/src @@ -604,53 +604,48 @@ def diff_method(*args): 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) @@ -673,7 +668,7 @@ def tag_helper(args, legend, list_tags, delete_tags, set_method): 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." -- 2.43.0