Using &CVS;
CVS
revision control
&CVS; Basics
&CVS; is the revision control system which many open source projects -
including &kde; — 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 (⪚ &kde; 1.1.2 and &kde; 2 were branches in &kde;'s
development tree), merge changes from one branch to another, ask for
differences between revisions, the revision history of files &etc;
&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 &tdevelop;, 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 &tdevelop;
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 &tdevelop; 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 ...)