croak("in %s, %s is not a %s" % (arg, name, legend))
else:
with backend.lifter(arg):
- delete_method(name, arg)
+ delete_method(name, metadata)
if not quiet and len(args) > 1:
announce("in %s, %s %s removed" % (arg, legend, name))
return
# tag reference.
with backend.lifter(arg):
backend.set_tag(newname, metadata.symbols[name], metadata)
- backend.delete_tag(name, arg)
+ backend.delete_tag(name, metadata)
if not quiet and len(args) > 1:
announce("in %s, %s -> %s" % (arg, name, newname))
return
if fn:
arg += " >" + fn
do_or_die("co -q -p -r{1} {0}".format(arg, revision), loud=True)
- def delete_tag(self, tagname, arg):
+ def delete_tag(self, tagname, metadata):
"Delete a specified tag."
- do_or_die("rcs -n{0} {1}".format(tagname, arg))
+ do_or_die("rcs -n{0} {1}".format(tagname, metadata.name))
def set_tag(self, tagname, revision, metadata):
"Set a specified tag."
do_or_die("rcs -n{0}:{1} {2}".format(tagname, revision, metadata.name))
- def delete_branch(self, branchname, arg):
+ def delete_branch(self, branchname, metadata):
"Delete a specified branch."
# From rcs(1): -orange deletes ("outdates") the revisions
# given by range. A range consisting of a single revision
# What we need do is find the branch tip, then walk back to
# just after the first point where it joins another branch,
# then do a delete to end of branch from there.
- croak("branch deletion is not yet supported")
- #do_or_die("rcs -o{0}: {1}".format(revision, arg)
+ base = metadata.branch_to_tip(branchname)
+ while True:
+ if base is not None and metadata.by_native_d[base].branches:
+ break
+ else:
+ base = self.pred(base)
+ do_or_die("rcs -o{0}: {1}".format(self.succ(base), arg))
+ self.delete_tag(branchname, metadata.name)
def set_branch(self, name, revision, metadata):
"Set the specified branch to be default, creating it if required."
if name in metadata.symbols: