metadata = History(arg)
revision = validation_hook(ctx, metadata, name)
with backend.lifter(arg):
- set_method(name, revision, arg)
+ set_method(name, revision, metadata, arg)
if not quiet and len(args) > 1:
# FIXME: Misleading message when creating a branch.
announce("%s %s = %s in " % (legend, name, revno, arg))
def branch_set_validate(ctx, metadata, name):
if not ctx.is_empty():
croak("cannot accept a revision after a branch name")
- if name not in metadata.symbols:
- with backend.lifter(arg):
- return backend.create_branch(metadata)
tag_helper(args, "branch",
branch_set_validate,
backend.delete_branch, backend.set_branch)
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, arg):
+ def set_tag(self, tagname, revision, _metadata, 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 create_branch(self, metadata, arg):
- "Create a new branch starting from the locked revision."
- croak("branch creation is not yet supported")
- def set_branch(self, _name, revision, arg):
- "Set the specified branch to be default."
+ def set_branch(self, name, revision, metadata, arg):
+ "Set the specified branch to be default, creating it if required."
+ def branchfrom(c, p):
+ "Is c a branch child (not direct descendant) of parent p?"
+ c = c.split(".")
+ p = p.split(".")
+ return len(c) == len(p) + 2 and c[len(p):] == p
+ newsib = len(item for item in metatdata.revlist \
+ if branchfrom(item.revision, baserev))
croak("branch change is not yet supported")
#do_or_die("rcs -b%s %s" % (revision, name))
def move(self, source, target):