CVSSYNC(1) | CVSSYNC(1) |
cvssync - fetch CVS repository masters via rsync
cvssync [-c] [-v] [-n] [-o outdir] [host-path module | cvsurl]
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. However, many CVS repositories are set up in a way that makes anonymous read-only rsync possible.
cvssync is an auxiliary tool issued with cvs-fast-export(1) 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.
-c
-n
-o
-v
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.
There is a program called cvssuck roughly equivalent to cvssync. It has the advantage that it grabs the master files using CVS client commands, so rsync access is not required. It has the disadvantage that because of bugs in CVS itself, it may mangle repository metadata on the way through. The author warns "However it is inefficient and not perfect because cvs client/server protocol is not designed for mirroring." Heed this warning; do not use cvssuck except as a last resort.
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
cvssync rfk.cvs.sourceforge.net:/cvsroot/rfk robotfindskitten
cvssync anonymous@rfk.cvs.sourceforge.net:/cvsroot/rfk robotfindskitten
cvssync rfk.cvs.sourceforge.net:/rfk robotfindskitten
cvssync cvs://cvs.sourceforge.net/rfk#robotfindskitten
cvssync anonymous@cvs.savannah.gnu.org:/sources/groff groff
cvssync cvs.savannah.gnu.org:/groff groff
cvssync cvs://cvs.savannah.gnu.org/groff#groff
cvssync cvs:///home/user/foo#bar
Report bugs to Eric S. Raymond <esr@thyrsus.com>. The project page is at http://catb.org/~esr/cvs-fast-export
2019-04-24 |