Name

cvssync — fetch CVS repository masters via rsync

Synopsis

cvssync [-c] [-v] [-n] [-o outdir] [host-path module | cvsurl]

DESCRIPTION

cvssync attempts to fetch a copy of a remote CVS repository into a local directory. All you have to tell it is the arguments you’re expected to hand CVS to perform a checkout of the remote.

Alternatively, you can give it a single argument in URL format, of the form cvs://<host>/<path>#<module>.

If a previous cvssync has been done into the directory, cvssync will do the least amount of file copying required to resynchronize the local copy with the remote. It relies on rsync(1) to accomplish this.

cvssync knows about the site-structure idiosyncracies of some major CVS hosting sites and applies that knowledge so you don’t have to. Presently its rules are known good for SourceForge, Savannah, Sourceware, and Berlios. Its default method should work for many other sites. You can use the -v option to see what rsync command is actually generated in these cases.

Because cvssync uses rsync, you may need to have an ssh public key installed in an account on the target system for it to work.

cvssync is an auxiliary tool issued with cvs-fast-export in order to facilitate moving CVS repositories to version control systems that aren’t chipped out of flint. Of course, you can also use it for backups and other purposes.

OPTIONS

-c
Create a mirror that you can do checkouts from. Normally this tool creates a bare mirror of the module masters you are interested in without creating a module subdirectory and CVSROOT. With this option, the created directory structure is changed to include an empty CVSROOT, and the masters go in a subdirectory named after the module. A cvs -d:local: co command can then be used to make a local checkout for inspection.
-n
Dry-run. Generate the commands that would be performed but do not execute them. Useful with -v.
-o
Set the name of the output directory. The default is to use the module name.
-v
Verbose. Show subcommands as they are being executed.

DISAMBIGUATION

There is another program called cvsync for making live mirrors; this is not it. One important difference is that cvsync requires a dedicated service daemon, cvsyncd, to be running on the CVS host; it’s not designed for ad-hoc fetches from random hosting sites.

EXAMPLES

Note that these examples may become obsolete as CVS repositories are decommissioned. They are meant to illustrate usage patterns.

cvssync cvs.sourceforge.net:/cvsroot/rfk robotfindskitten
Fetch the Robot Finds Kitten project from Sourceforge
cvssync rfk.cvs.sourceforge.net:/cvsroot/rfk robotfindskitten
Using the full Sourceforge pseudo-hostname also works.
cvssync anonymous@rfk.cvs.sourceforge.net:/cvsroot/rfk robotfindskitten
Any login credential is ignored.
cvssync rfk.cvs.sourceforge.net:/rfk robotfindskitten
The leading /cvsroot on a SourceForge path can be omitted.
cvssync cvs://cvs.sourceforge.net/rfk#robotfindskitten
Same fetch using the URL argument style.
cvssync anonymous@cvs.savannah.gnu.org:/sources/groff groff
Fetch the groff project repository from Savannah
cvssync cvs.savannah.gnu.org:/groff groff
Login credential and leading /sources can be omitted on Savannah.
cvssync cvs://cvs.savannah.gnu.org/groff#groff
Same fetch using the URL argument style.

REPORTING BUGS

Report bugs to Eric S. Raymond <esr@thyrsus.com>. The project page is at http://catb.org/~esr/cvs-fast-export

SEE ALSO

rsync(1), rcs(1), cvs(1), cvs-fast-export(1).