Using CVS

CVS Basics
CVS is the revision control system which many open source projects - including — are using. It stores all sources codes in a central place, called the repository. From the repository, developers can check out a current version of the project or snapshots of it at arbitrary points of time. In contrast to some other revision control systems, it is not necessary to lock files one wants to work on. So development can be highly parallelized.
Whenever a developer has finished a task, he commits his code (accompanied by a log message). CVS takes the job to merge the changes made by several developers. It can of course happen that developers work on the same piece of code, resulting in a conflicting set of changes (in practice this occurs seldom, and is often a sign of a lack of communication). In this case CVS rejects a commit; only after all conflicts are resolved, a file can be committed.
So far, this has been a description of the basic features of CVS one usually has to cope with. But CVS can provide a lot more: One can maintain several branches of a project (e. g. 1.1.2 and 2 were branches in 's development tree), merge changes from one branch to another, ask for differences between revisions, the revision history of files
CVS is implemented as a client-server system. As a user, all communication with the repository goes through the command line program CVS. A higher level user interface is available through frontends like Cervisia () or TkCVS (). In KDevelop, only a small part of the CVS functionality which is important for your daily work can be used directly.
Basic knowledge of CVS usage is assumed. In particular, you should know how to checkout a given project from the repository. We recommend the book Open Source Development With CVS by Karl Fogel which is freely distributed (except for the non-technical chapters). See .

CVS Commands in KDevelop
In the file views, the following context menu items are available:

Add to Repository
Prepares the marked file for addition to the repository. The file is transferred to the repository when you commit it (or the containing directory) the next time.

Remove from Repository
Prepares a file for removal from the repository. This also deletes the file on the local file system, so use this feature with care!

Update
Runs cvs update to merge any changes from other users into your working directory. When you use this menu item over a directory, the update normally happens recursively, except if you have disabled this in the configuration file .cvsrc.

Commit
Runs cvs commit to upload any locally made changes to the repository. Note that you should update before doing this. Otherwise, when another user has committed his own changes before, CVS may give you an error message.
All these commands are invoked as subprocesses by KDevelop without any further command line options or environment variables. This may be a problem when the connection with the CVS server goes through a ssh connection and requires that you enter your password each time you commit or update. This is for instance necessary when your project is hosted on sourceforge.net. Workarounds for this problem are described on the CVS/SSH FAQ which you can find in the SourceForge documentation.

Behind the Scenes

What CVS Records in the Working Directory
(... to be written ...)