FreeBSD Handbook : The Cutting Edge: FreeBSD-current and FreeBSD-stable : Synchronizing Source Trees over the Internet
Previous: Staying Stable with FreeBSD
Next: Anonymous CVS

18.3. Synchronizing Source Trees over the Internet

Contributed by Jordan K. Hubbard <jkh@FreeBSD.ORG>.

There are various ways of using an Internet (or email) connection to stay up-to-date with any given area of the FreeBSD project sources, or all areas, depending on what interests you. The primary services we offer are Anonymous CVS, CVSup and CTM.

Anonymous CVS and CVSup use the pull model of updating sources. In the case of CVSup, the user (or a cron script) invokes the cvsup program and it interacts with a cvsupd server somewhere to bring your files up to date. The updates you receive are up-to-the-minute and you get them when, and only when, you want them. You can easily restrict your updates to the specific files or directories that are of interest to you. Updates are generated on the fly by the server, according to what you have and what you want to have. Anonymous CVS is quite a bit more simplistic than CVSup in that it's just an extention to cvs(1) which allows it to pull changes directly from a remote CVS repository. CVSup can do this far more efficiently, but anoncvs is easier to use.

CTM, on the other hand, does not interactively compare the sources you have with those on the master archive or otherwise pull changes across. Instead, a script which identifies changes in files since its previous run is executed several times a day on the master CTM machine, any detected changes being compressed, stamped with a sequence-number and encoded for transmission over email (in printable ASCII only). Once received, these "CTM deltas" can then be handed to the ctm_rmail(1) utility which will automatically decode, verify and apply the changes to the user's copy of the sources. This process is far more efficient than CVSup or Anonymous CVS, and places less strain on our server resources since it is a push rather than a pull model.

There are other trade-offs, of course. If you inadvertently wipe out portions of your archive, CVSup will detect and rebuild the damaged portions for you. CTM won't do this and anoncvs is probably more likely to become seriously confused than anything else. If you wipe some portion of your source tree out (and don't have it backed up) then you will have to start from scratch (from the most recent CVS "base delta") and rebuild it all with CTM or, with anoncvs, simply delete the bad bits and re-sync.

For more information on Anonymous CVS, CTM and CVSup, please see one of the following sections:

18.3.1. Anonymous CVS

18.3.1.1. Introduction
18.3.1.2. Using Anonymous CVS
18.3.1.3. Examples
18.3.1.4. Other Resources

18.3.2. CTM

18.3.2.1. Why should I use CTM?
18.3.2.2. What do I need to use CTM?
18.3.2.3. Starting off with CTM for the first time
18.3.2.4. Using CTM in your daily life
18.3.2.5. Keeping your local changes
18.3.2.6. Other interesting CTM options
18.3.2.7. Future plans for CTM
18.3.2.8. Miscellaneous stuff
18.3.2.9. Thanks!

18.3.3. CVSup

18.3.3.1. Introduction
18.3.3.2. Installation
18.3.3.3. Configuration
18.3.3.4. Running CVSup
18.3.3.5. CVSup File Collections
18.3.3.6. Announcements, Questions, and Bug Reports

FreeBSD Handbook : The Cutting Edge: FreeBSD-current and FreeBSD-stable : Synchronizing Source Trees over the Internet
Previous: Staying Stable with FreeBSD
Next: Anonymous CVS