VChacks -- Tools for RCS and CVS
VChacks is a collection of little scripts, in Perl and Python, for
manipulating RCS and CVS working directories and repositories. For
a while, I found myself spending enough time on these meta-hacks
(software to help me write and release software) that I finally
decided I should share them with the world.
The VChacks are:
- cvs_chroot (Python)
change the repository root of an existing CVS working
directory without disturbing your working files
(requires: Python 1.5.2)
- cvstatus (Perl)
distill the essence of the "cvs status" command: just show
the filename, status, and last-modified time. Basically
a glorified "cvs status | grep '^File'".
(requires: Perl 5 [5.004?])
- tag_release (Perl)
given a working directory and a (presumably old) release
tree, compares files in the release tree to progressively
older revisions of the working files to find a match and
assign a tag for the old release. Handy if you forget
to run "cvs tag" (or "rcs -N") after making a release, but
still want releases tagged!
(requires: Perl 5,
MNI Perl Library)
- check_release (Perl)
check that all files listed in a MANIFEST file are politically
correct according to RCS: checked in, unlocked, read-only,
no outstanding diffs, etc. Pretty well obsoleted by CVS and
its "status" command, even more so by my cvstatus
script... but handy if you have projects still under RCS
control.
(requires: Perl 5,
MNI Perl Library)
- rcstouch (Perl)
change the last-modified time of a working file to match
the checkin time (from "rlog" output)
(requires: Perl 5)
Currently, the only way to get your hands on the VChacks is via
CVS; the above links will get you the latest version of each script.
Or visit the project
CVS page for details. One of these days I'll get around to
making a proper release of the package.
Note that several of the tools rely on a Perl library I developed
when I worked at the
Montreal Neurological Institute
(MNI), called appropriately enough the MNI Perl Library. While this
is a handy set of tools for writing glorified shell scripts in Perl
(which is what I did an awful lot of when I worked at the MNI), it's
a fair chunk of code to require for these little tools -- so I plan
on phasing out the dependencies on the MNI Perl Library over time.
For now, though, if you really want to run check_release or
tag_release, you'll need to
download and install it.
(Don't worry, it's pure Perl and installation is a snap.)
Greg Ward
gward@python.net
Montreal, Canada
Created: 18 May 2000
Updated: 4 Aug 2001
Tweaked: 4 Aug 2001