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.
Warning: While it is possible to update only parts of your source tree, the
only supported update procedure is to update the entire tree and recompile both userland
(i.e., all the programs that run in user space, such as those in /bin and /sbin) and kernel sources.
Updating only part of your source tree, only the kernel, or only userland will often
result in problems. These problems may range from compile errors to kernel panics or data
corruption.
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 is just an extension to
CVS which allows it to pull changes directly from a remote CVS
repository. CVSup can do this far more efficiently, but Anonymous CVS 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 them 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, 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 will not do this, and if you wipe some portion of
your source tree out (and do not 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 Anonymous CVS, simply
delete the bad bits and resync.