Thornleyware logo

Providing customized source code control with CVS

Installing CVS

Decisions to make:

You need to select a server to host CVS on. I recommend a Unix server as being more reliable, more secure, more versatile, and generally the more conservative choice. It is possible to use a Windows NT or later server, but it comes with limitations. The requirements are later on this page. Unless you have an investment in Unix already, I would recommend either some version of Linux, or, if you are more concerned with security, OpenBSD. OpenBSD was designed with security in mind, and that is by far the best way to get a secure system. However, Linux is more familiar in general, and easier to get support for.

You also need to decide what client software to use. CVS itself serves as an adequate client, but there are many others. I recommend that the server be solid and reliable above all other criteria, but it is not so necessary for the clients. A bad server can corrupt your code base, but a bad client can only lose local changes. There are graphic clients available for Windows, the Macintosh, Unix, Java, and other platforms.

Process:

Once you have selected a server machine, you need to get the appropriate server software, and the appropriate client software, and then proceed to configuration.

Server Requirements:

The requirements on the server are that it have adequate memory and disk space. All desktop computers on the market today have excellent CPUs for the job, and the main performance bottleneck will likely be either disk or network input/output.

To determine the size of server you need, consider the size of the files you will put in the repository, the likely size of the largest file, the largest size of module to be checked out, and the number of users you expect to be actively using the repository at any one time (which will likely be one tenth or one twentieth of the total users).

The repository should be able to expand, on disk, to three times the size of the initial files. If you intend to use and change many files that aren't text, increase that to five times or more.

In Unix, the /tmp directory should be equal in size to two or three times the size of the largest checkout times the number of simultaneous users. This is in addition to the repository.

Also, CVS needs memory. There must be more memory than ten times the size of the largest file, and more memory than the largest individual checkout times the number of simultaneous users. Pick the higher of these. In Unix, two-thirds of this might be swap space, although performance will be somewhat better if it is real memory.

As an example, suppose we intend to create a repository of half a gigabyte to start with, with the largest section anybody would want to check out at once being two hundred megabytes, and the largest individual file being ten megabytes. We have a few dozen users, and want to schedule for four people using the repository simultaneously.

In this case, we conclude that the repository should take a gigabyte and a half, and the /tmp directory should have about the same. The memory should be the greater of one hundred megabytes (from the size of the largest file) and eight hundred megabytes (from the size of the largest checkout, and intended users). We could allot 256M of real memory, one half gigabyte of swap, and three gigabytes of repository and temporary space and fit this on a four-gigabyte disk if we used the computer for nothing else.

If we wish to enhance performance, we should get fast disks, and put the repository and /tmp directory on separate, independent disks, with separate controllers. We should increase the memory to the limits above, and provide swap space in addition. We should also run fast network connections, perhaps 100 Mb/second Ethernet.

All contents of these pages Copyright 2002 by David H. Thornley.


Contact: webmaster@thornleyware.com