About source code version control with CVS

About CVS

The Concurrent Versions System (CVS) is a version control system for keeping track of all modifications to project source code files. CVS is widely used in both open source and proprietary software development projects, and is generally considered to be the best freely available, full-featured version control tool. Two special features make CVS particularly suited to collaborative development across the Internet:

  1. CVS allows multiple developers to edit their own working copies of files simultaneously, then deals with combining all the changes and notifying developers when there are conflicts.
  2. Remote access to source code file repositories. Developers who are project members can obtain and modify project files from virtually anywhere.

CVS is a client-server system. The CVS repository is maintained on a web server; clients run on users' machines and connect to the server via the Internet. You must have a CVS client on your local machine to access the CVS server for projects hosted on this site. Clients are available for nearly all platforms including: Unix, Windows, Macintosh, and any Java-based platform. This documentation includes instructions for running CVS in a Unix shell or WinCVS.

As a project member, CVS allows you to:

If you are new to CVS, one of the best ways to learn about it is simply to jump in and begin using it. When you click on the Version control link in the Project Resources tool bar, you can follow the instructions on that page for checking out your own working copy of a particular project's source files.

For those looking for a step-by-step orientation of CVS, A Day with CVS, excerpted from the online version of Karl Fogel's book, Open Source Development with CVS, is highly recommended. Much of the CVS help information on this site comes from this authoritative source.

Getting CVS commit access on open source projects

Suppose you are interested in joining an open source project but you are unknown to the project owner and other project members. The logical first step is requesting to join the project, of course, but you can take some basic preliminary steps toward establishing yourself as a potential contributor, thereby raising the likelihood of gaining membership approval.

  1. Subscribe to and regularly read the relevant discussions so that you know what is going on in the particular area of development you are interested in.
  2. When you post your first message to a discussion, introduce yourself and include the following:
    • who you are
    • a few words on your background
    • your interest in the project, and
    • what you would like to see happen with the project.
  3. Make sure you have browsed through the existing source code and understand what it is doing and how. If something is poorly documented, confusing, or you just can't grasp what is going on, ask on the associated discussion for a summary.
  4. Mention in writing that you understand the licensing governing the code that you will be working on, and your agreement that any changes you contribute are your own and these can be incorporated under that license.
  5. Request project membership to gain cvs check-in permissions on an area of the code base, and explain what sorts of things you are interested in doing with it. You will need to communicate frequently with the people who already maintain that area of code, so make sure there is consensus about what you should be working on.
  6. When the project owner approves your project membership, you will get a CVS check-in account, probably restricted to a certain area. Make sure you understand which CVS branch you are supposed to be working on!
  7. Submit some patches to establish that you know what you are doing.
  8. When you make modifications and enhancements, seek feedback and discussion about these on the associated discussions.

Further CVS documentation

CVS Books

CVS Clients

You can download CVS clients from various web sites. You can click on the links below to download TortoiseCVS and WinCVS.


Eclipse with CVS

An Integrated Development environment (IDE) can be described as an application which provides the user the opportunity to perform tasks such as compiling, testing and debugging in a single development environment. You can perform all your tasks simultaneously without having to download separate applications for every operation. An example of an Integrated Development Environment is Eclipse.

About Eclipse

Eclipse is a software development project which is dedicated to providing a feature rich platform to develop a highly integrated tool. Eclipse is also an open source development project. More information about Eclipse can be found at http://www.eclipse.org/eclipse/faq/eclipse-faq.html#about_8 .

To Configure Eclipse with CollabNet:

  1. Log into CollabNet as a Domain Administrator and create a project with CVS as the Version Control tool.
  2. Go to the location where you have installed Eclipse, for example D:\eclipse-SDK-3.0-win32\eclipse.
  3. Open the Eclipse folder and double-click the Eclipse icon to launch the software.
  4. In Eclipse, go to File > New > Other and select Checkout Projects In CVS.
  5. Click Next. You will see a window which says Checkout From CVS. Select "Create a New Repository Location."
  6. Click Next. You will see a window which has fields for Location, Authentication and Connection.
    • Under Location, enter the location of the project for example htp://www.devbox.(domainname).net in Host and enter /cvs in the Repository Path.
    • Under Authentication, enter you Username and Password.
    • Under Connection, choose the type of connection,for example: pserver.
  7. Click Next. Select Use Specified Module Name and enter the name of the project you have created in CollabNet.
  8. Click Next. Select Checkout As A Project In The Workspace and enter the project name.
  9. Click Next. Enter the location of the workspace, for example c:\test.
  10. Click Next. Select the tag to checkout from and click Finish. You will see your project displayed in the main navigation window of Eclipse.