CVS tools
These tools relate to CVS (Concurrent Versioning System),
and provide some useful extra functions:
- cvsadd
/ cvsrm
This script marks files in a local checkout for addition (or deletion),
when the CVS server is not reachable. This is done by local
manipulation of the CVS/Entries file, which doesn't require
access to the CVS repository. The operation and status messages of
cvsadd / cvsrm are identical to those of the
"standard" cvs add and cvs rm commands, with the
exception that they work offline and do not contact the repository.
cvsrm can be a hardlink or symlink to cvsadd.
- chcvsroot
This script recursively changes the CVS Root of a local checkout.
This is useful when the address of the repository or
of the CVS server has changed, and you want to keep your current
checkout with all its current modifications. As a special bonus,
the script makes an automatic backup of the addresses of the old
repository, which makes a root change operation even undoable.
- cvsbackup
Makes a complete tar-bzipped backup of the CVS repository belonging
to the local CVS checkout. This works even when the repository
is on a remote server. This is useful if you want your own backup
of the CVS server's files, or if you want to clone the repository
on your local machine (very useful in conjunction with chcvsroot,
see above).
Backup files are named '$directory_$date.tbz2'.
- cvsls
A simple script that lists the contents and registered versions of the
current CVS checkout. It does so by inspecting the local
CVS/Entries file, which means that it works without contact
to the repository. A simple, but useful tool for offline work.
- automerge
A very powerful script which can be used to maintain multibranch
CVS projects, where changes in one branch need to be merged into
another branch frequently. To facilitate this, automerge can
be set up to track exactly which changes have to be merged and how.
This script rids you of a lot of complicated branch fiddling, reducing
most complications to the initial "setting up" part.
If you want to use this script, I recommend reading the comments in
the code, it is well reasonably well documented and contains
helpful information. Also try 'automerge --help'.
This script was used during the development of e.g. the functional
programming language
Acute and its
interpreter, of which there were initially a few different variants,
each with its own CVS branch.
Whenever something was changed or added to the "vanilla" version of
the language, automerge made the changes propagate to the other
branches, essentially minimising the maintenance work which would
otherwise have had to be done manually. Automerge has some advanced
features, e.g. a skip-function for omitting selected merges.
Complete index of this category (may include
non-documented or experimental scripts)
These scripts are part of the shtools collection and
are maintained by Christian Steinruecken.