From: Eric S. Raymond Date: Sun, 9 Nov 2014 18:07:21 +0000 (-0500) Subject: Another step towards full branch support. Regresion test passes. X-Git-Tag: 0.3^0 X-Git-Url: http://thyrsus.com/gitweb/?a=commitdiff_plain;h=0c49437a5f63459d61000116ec36590901a9c34c;p=src.git Another step towards full branch support. Regresion test passes. --- diff --git a/src b/src index d3fbeee..106b4c6 100755 --- a/src +++ b/src @@ -679,19 +679,28 @@ def tag_helper(args, legend, delete_method, set_method): (revspec, args) = preamble(legend, args) for arg in args: metadata = History(arg) - revspec = metadata.resolve(revspec) - if name in metadata.symbols: - croak("%s %s already set." % (legend, name)) - if revspec is None: - revision = metadata.tip().revision - revno = metadata.tip().revno - elif len(revspec) == 1: - revision = metadata.revno_to_rcs(revspec[0]) - revno = revspec[0] + # Semantics differs between tags and branches here + if legend == "tag": + revspec = metadata.resolve(revspec) + if name in metadata.symbols: + croak("%s %s already set." % (legend, name)) + if revspec is None: + revision = metadata.tip().revision + revno = metadata.tip().revno + elif len(revspec) == 1: + revision = metadata.revno_to_rcs(revspec[0]) + revno = revspec[0] + else: + croak("can't accept a range when %s setting" % legend) + elif legend == "branch": + if revspec is not None: + croak("cannot accept a revision after a branch name") + if name not in metadata.symbols: + backend.create_branch(metadata.new_branchpoint(metadata_current())) else: - croak("can't accept a range when %s setting" % legend) + croak("internal error - what is this thing called %s" % legend) with backend.lifter(arg): - set_method(name, revision, metadata.current(), arg) + set_method(name, revision, arg) if not quiet and len(args) > 1: announce("%s %s = %s in " % (legend, name, revno, arg)) @@ -889,15 +898,18 @@ class RCS: def delete_tag(self, tagname, arg): "Delete a specified tag." do_or_die("rcs -n{0} {1}".format(tagname, arg)) - def set_tag(self, tagname, revision, _baserev, arg): + def set_tag(self, tagname, revision, arg): "Set a specified tag." do_or_die("rcs -n{0}:{1} {2}".format(tagname, revision, arg)) + def create_branch(self, name, revision, arg): + croak("branch creation is not yet supported") def delete_branch(self, branchname, arg): "Delete a specified branch." croak("branch deletion is not yet supported") - def set_branch(self, branchname, revision, baserev, arg): - "Set the specified branch to be default, creating if required." - croak("branch creation is not yet supported") + def set_branch(self, _name, revision, arg): + "Set the specified branch to be default." + croak("branch change is not yet supported") + #do_or_die("rcs -b%s %s" % (revision, name)) def move(self, source, target): "Move a file and its history." do_or_die("mv {0} {1} && mv {2} {3}".format(source, target,