From 14b232b1e9e9709bfac92ad301cfc48585575719 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sun, 9 Nov 2014 08:52:41 -0500 Subject: [PATCH] More tag code refactoring. --- src | 46 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/src b/src index a56becf..0ac4622 100755 --- a/src +++ b/src @@ -633,28 +633,7 @@ def delete_tags(args): if not quiet and len(args) > 1: announce("tag %s removed from %s" % (tagname, arg)) -def set_tags(args): - if not args: - croak("setting tags requires a tagname argument") - tagname = args.pop(0) - (revspec, args) = preamble("tag", args) - for arg in args: - master = History(arg) - revspec = master.resolve(revspec) - if revspec is None: - revision = master.tip().revision - revno = master.tip().revno - elif len(revspec) == 1: - revision = master.revno_to_rcs(revspec[0]) - revno = revspec[0] - else: - croak("can't accept a range when setting tags.") - 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)) - -def tag_helper(args, list_tags, delete_tags, set_tags): +def tag_helper(args, legend, list_tags, delete_tags, set_method): "Dispatch to handlers for tag and branch manipulation." if not os.path.exists(repodir): croak("repository subdirectory %s does not exist" % repodir) @@ -671,11 +650,30 @@ def tag_helper(args, list_tags, delete_tags, set_tags): if args[0] in ("-l", "list"): list_tags(*args[1:]) return - set_tags(args) + # set_tags case + if not args: + croak("%s setting requires a name argument" % legend) + name = args.pop(0) + (revspec, args) = preamble("tag", args) + for arg in args: + master = History(arg) + revspec = master.resolve(revspec) + if revspec is None: + revision = master.tip().revision + revno = master.tip().revno + elif len(revspec) == 1: + revision = master.revno_to_rcs(revspec[0]) + revno = revspec[0] + else: + croak("can't accept a range when %s setting" % legend) + with backend.lifter(arg): + set_method(name, revision, arg) + if not quiet and len(args) > 1: + announce("%s %s = %s in " % (legend, name, revno, arg)) def tag_method(*args): "Inspect, create, and delete tags." - tag_helper(args, list_tags, delete_tags, set_tags) + tag_helper(args, "tag", list_tags, delete_tags, backend.set_tag) def branch_method(*args): "Inspect, create, and delete branch." -- 2.43.0