for arg in args:
revlist = log_capture(arg)
if revspec is None:
+ revspec = [len(revlist)]
revision = ""
elif len(revspec) != 1:
croak("checkout cannot take a range")
elif revspec[0] > len(revlist):
- croak("%s has only %d revisions" % len(revlist))
+ croak("%s has only %d revisions" % (arg, len(revlist)))
else:
revision = revlist[len(revlist) - revspec[0]].revision
- do_or_die("mv .src/{0},v . && rm -f {0} && co -u{1} {0} ; mv {0},v .src".format(arg, revision))
+ do_or_die("mv .src/{0},v . && rm -f {0} && rcs -q -u {0},v && co -q -l{1} {0} ; mv {0},v .src".format(arg, revision))
announce("%s <- %d" % (arg, revspec[0]))
def cat_method(*args):
- "Dump revision content to srandard output."
+ "Dump revision content to standard output."
(revspec, args) = preamble("cat", args)
for arg in args:
revlist = log_capture(arg)
do_or_die("co -q -p -r{1} {0}".format(arg, item.revision), loud=True)
do_or_die("mv {0},v .src".format(arg))
+def diff_method(*args):
+ "Dump diffs between revisions to standard output."
+ (revspec, args) = preamble("diff", args)
+ diffopts = "-u"
+ while args and args[0].startswith("-"):
+ diffopts += " " + args.pop(0)
+ for arg in args:
+ revlist = log_capture(arg)
+ do_or_die("mv .src/{0},v .".format(arg))
+ if revspec is None:
+ # The || : suppresses the error return from diff(1)
+ do_or_die("rcsdiff -q {0} {1} || :".format(diffopts, arg), loud=True)
+ do_or_die("mv {0},v .src".format(arg))
+
dispatch = {
"help": help_method,
"init": init_method,
"log": log_method,
"checkout": checkout_method,
"cat": cat_method,
+ "diff": diff_method,
}
if __name__ == "__main__":