= README for cvs-fast-export =

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 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. It requires that
you have CVS installed.

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`.

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 tour of
the internals in `hacking.adoc`, and a detailed description of the
commit coalescence algorithm in `cvs-collation-spec.adoc'.

If you find this code useful, please 
https://www.patreon.com/esr[support me on Patreon.]

This code is commonly packaged as "cvs-fast-export".

image:https://repology.org/badge/vertical-allrepos/cvs-fast-export.svg[Repology
package status]
