= 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 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 https://www.patreon.com/esr[support me on Patreon.]