This program analyzes a collection of RCS files in a CVS repository
(or outside of one) and, when possible, emits an equivalent history in
the form of a fast-import stream. Not all possible histories can be
rendered this way; the program tries to emit useful warnings when it
can’t. The program can also produce a visualization of the resulting
commit DAG in the DOT format handled by the graphviz
suite.
Build prerequisites are explained in the toplevel buildprep
script,
which you may be able to run to get all the packages you need.
This program could have been called rcs-fast-export
with equal
appropriateness; the cvs-fast-export
name was chosen to avoid
colliding with a pre-existing script with that name by Giuseppe
Bilotta.
The analysis stage of this code originally travelled as parsecvs
and was written by Keith Packard in early 2006. It was briefly
maintained by Bart Massey before passing to Eric S. Raymond in
late 2012; ESR wrote the fast-export output stage and renamed the
program to reflect its new function. More historical details are
in hacking.asc
.
The distribution includes a tool, cvssync
, for fetching masters from
CVS remote repositories so cvs-fast-export
can see them. You will
need rsync
installed to use it.
A wrapper script called cvsconvert
runs a conversion to git and
looks for content mismatches with the original CVS.
Also included is a tool called cvsstrip
that strips content out of
trees of RCS/CVS masters, leaving only metadata structure in place. If
you encounter a bug in this program, sending the maintainer a reduced
version of your CVS tree greatly decreases the expected time to fix.
A more detailed guide to effective bug reporting is at reporting-bugs.adoc
.
This code has a regression-test suite; invoke it with make check
.
You will need RCS and CVS installed to run the tests, but they’re
not required for production use of cvs-fast-export
. Installed CVS
is also required to use the cvsconvert
wrapper script.
A make check
can fail in obscure ways if you don’t have all the required
tools installed; you’ll need CVS and Python. If you get complaints indicating
that *.repo
files don’t exist, install these tools and try again. A make
clean
in the tests directory might be required to clear out debris.
Warning: The regression tests will fail spuriously if your CVS lacks the
MirOS patches. These are carried by Debian Linux and derivatives; you can
check by Looking for MirDebian
in the output of cvs --version
.
See also the NEWS.adoc
and TODO.adoc
files. There is an (incomplete) tour of
the internals in hacking.adoc
.
If you find this code useful, please support me on Patreon.