What is CVS? Overview A sample session
CVS can do a lot of things for you, but it does not try to be everything for everyone.
|CVS is not a build system.|
Though the structure of your repository and modules
file interact with your build system
CVS does not dictate how you build anything. It merely stores files for retrieval in a tree structure you devise.
CVS does not dictate how to use disk space in the
checked out working directories. If you write your
If you modularize your work, and construct a build
system that will share files (via links, mounts,
But you have to remember that any such system is a lot of work to construct and maintain. CVS does not address the issues involved.
Of course, you should place the tools created to
support such a build system (scripts, `
Figuring out what files need to be rebuilt when
something changes is, again, something to be handled
outside the scope of CVS. One traditional
approach is to use
See Builds, for more information on doing builds in conjunction with CVS.
|CVS is not a substitute for management.|
Your managers and project leaders are expected to talk to you frequently enough to make certain you are aware of schedules, merge points, branch names and release dates. If they don't, CVS can't help.
CVS is an instrument for making sources dance to your tune. But you are the piper and the composer. No instrument plays itself or writes its own music.
|CVS is not a substitute for developer communication.|
When faced with conflicts within a single file, most developers manage to resolve them without too much effort. But a more general definition of ``conflict'' includes problems too difficult to solve without communication between developers.
CVS cannot determine when simultaneous changes
within a single file, or across a whole collection of
files, will logically conflict with one another. Its
concept of a conflict is purely textual, arising
when two changes to the same base file are near enough
to spook the merge (i.e.
CVS does not claim to help at all in figuring out non-textual or distributed conflicts in program logic.
For example: Say you change the arguments to function
Acquire the habit of reading specs and talking to your peers.
|CVS does not have change control|
Change control refers to a number of things. First of
all it can mean bug-tracking, that is being able
to keep a database of reported bugs and the status of
each one (is it fixed? in what release? has the bug
submitter agreed that it is fixed?). For interfacing
CVS to an external bug-tracking system, see the
Another aspect of change control is keeping track of
the fact that changes to several files were in fact
changed together as one logical change. If you check
in several files in a single
Another aspect of change control, in some systems, is
the ability to keep track of the status of each
change. Some changes have been written by a developer,
others have been reviewed by a second developer, and so
on. Generally, the way to do this with CVS is to
generate a diff (using
|CVS is not an automated testing program|
It should be possible to enforce mandatory use of a
testsuite using the
|CVS does not have a builtin process model|
Some systems provide ways to ensure that changes or
releases go through various steps, with various
approvals as needed. Generally, one can accomplish
this with CVS but it might be a little more work.
In some cases you'll want to use the `