Appendix A. CVS examples

Table of Contents

Checking out from the repository
Checking in to the repository
Updateing changes performed by other developers
Dismissing changes
Keeping different branches on the same machine
Promoting bug-fixes to the main branch
Creating a new stable release

It is not the intention of this document to give a complete introduction to CVS. Nevertheless, a few examples should give a quick overview on the basic operations to be performed by the developer.

It is assumed, that the developer is registered with the KMyMoney project and has read/write access to the repository. Also, it is assumed, that the necessary environment variables are setup, so that CVS knows how to access the repository. Details about the settings can be found on the SourceForge.net web-site.

Throughout the next sections, the examples given use the CVS command line interface. The options are abbreviated. The operations described here are also accessible through various GUI clients available for CVS. Also, I usually use the -q (quiet) option to suppress some messages issued by CVS. If you omit the -q option, the output differs from the one shown here, even though the result of the operation is the same.

Checking out from the repository

The very first operation is to fill the sandbox. This is done using the checkout operation. The first time the repository is checked-out, it's location must be specified. This is done using the -d option. In the example below, you must replace username with your real username at SourcForge.net.

Example A.1. Filling the sandbox for the first time

  thb:~> cvs -d username@kmymoney2.cvs.sourceforge.net:/cvsroot/kmymoney2 co kmymoney2

During the checkout process, CVS lists all filenames on the users screen and stores information about the repository's location and all the files checked out in the sandbox. Therefor, you do not need to specify the repository location during following CVS operations anymore.

For the KMyMoney project, a directory named kmymoney2 is created in your current working directory.

The above example fills the sandbox with the HEAD revision of all files. This stage is sometimes referred to as the “latest-and-greatest” and is the latest development stage.


If you plan to keep two or more branches of the project on your machine, please see the chapter Keeping different branches on the same machine for details.

If for some reason, you need to checkout a version of the project that is different from the development stage (e.g. you want to fix a bug in a stable version), you can fill an empty sandbox by supplying the version-tag as parameter to the checkout command.

Example A.2. Filling the sandbox for the first time with a specific version

  thb:~> cvs -d username@kmymoney2.cvs.sourceforge.net:/cvsroot/kmymoney2 co -r version-tag kmymoney2

This will store the version labelled with the tag version-tag in your sandbox. In case version-tag is a branch-tag, you are able to modify the files and check-in changes later on. In case, version-tag is a standard tag, checkin operations will be rejected by CVS.

As in the previous example, the directory kmymoney2 is created as the sandbox.