OpenBSD CVSync

What Is CVSync?

CVSync is a software package for distributing and updating source trees from a master cvs(1) repository on a remote server host. The OpenBSD sources are maintained in a CVS repository on a central development machine in Canada. With CVSync, OpenBSD users can easily keep their own source trees up to date.

CVSync uses the so-called pull model of updating. Under the pull model, each client asks the server for updates, if and when they are wanted. The server waits passively for update requests from its clients. Thus all updates are instigated by the client. The server never sends unsolicited updates. Users must either run the CVSync client manually to get an update, or they must set up a cron(8) job to run it automatically on a regular basis.

The term CVSync, capitalized just so, refers to the entire software package. Its main components are the client cvsync which runs on each user's machine, and the server cvsyncd which runs at each of the OpenBSD CVSync mirror sites.

The OpenBSD Project currently has four main source repositories:

What Is CVS?

CVS is the source code control system used to manage the OpenBSD source tree. It is described in more detail here. Note that CVS and CVSync are entirely different programs. Although CVS can be used for remote file access, it is not optimized for wholesale source tree distribution over the net, and CVSync can be easily an order of magnitude more efficient for this task.

Getting Started Using CVSync

If you only care about running CVSync, it is recommended that you download the cvsync package from the ftp mirror sites instead of building your own from the net/cvsync port.

For further information about CVSync, see the project homepage. However, don't build your own copy from unmodified upstream source - the port/package has been modified to support commitid which is now used in the OpenBSD repository.

In order to mirror the OpenBSD repository with CVSync, the following configuration file might be used:

	config {
	    # If your network link is a T1 or faster, comment out the following line.
	    collection {
		name openbsd release rcs
		prefix /cvs
		umask 002

This directs cvsync to refresh all OpenBSD distributions from with a umask(2) that permits group write permission to the local repository.

Assuming this file is saved as cvs-syncfile, the following command would be used to invoke cvsync

        cvsync -c cvs-syncfile

Using CVS to Work With Your Repository

Now that you have a local copy of the CVS repository, it is now simple to check out, update, or do any of the other CVS operations you would normally do against a remote repository, locally. For example:
        cvs -d/cvs checkout -P src
        cvs -d/cvs up -Pd
        cvs -d/cvs diff -u file.c
More details on CVS operation can be found in FAQ5, Fetching appropriate source code and in the cvs(1) man page.

Available CVSync Servers

The following CVSync servers are available: Note: If your server is listed on here with inaccurate or unknown information, please contact

You may want to use traceroute(8) to find out which server is nearest you. Problems with a server should be reported to the maintainer of the server in question.

As of March 2016, the CVS repository sizes are

openbsd-ports - 857MB
openbsd-src - 2201MB
openbsd-www - 598MB
openbsd-xenocara - 1426MB
openbsd-cvsroot - 1248MB

The overall repository size currently increases at a rate of about 400MB per annum. The src repository increases by about 150MB.

IMPORTANT NOTE: There are a few issues relating to cryptographic software that everyone should be aware of: