[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CVS Pros/Cons

From: Brian Murphy
Subject: CVS Pros/Cons
Date: Thu, 12 Feb 2004 12:57:11 +0000 (GMT)

There is a well documented account of the strengths
and weaknesses of CVS.

Will there be any plans for CVS to overcome the listed

How is future planning decided upon and is there a
timetable for future release?

Thansk for your feedback.

CVS advocacy and warts

Curtesy of Jonathan Gilligan,
originally posted at CodeProject discussion:

The strengths of CVS:

Concurrent model of development. This is purely a
matter of personal taste (or theological persuasion).
CVS people are often extremely offputting because they
spend lots of time going door to door telling
developers to adopt the concurrent model and be saved.
If you can back off a bit from the strength of the CVS
rhetoric, there are many good points about the
concurrent model and it suits what I do very nicely.
It may not suit your needs, in which case CVS is a
lousy choice. CVS is pretty much unique in supporting
this development model.

Excellent cross-platform support. Client-server model
allows use across platforms. The basic command-line
CVS client is widely ported. The WinCVS GUI front-end
is ported to Win32, Mac, and Linux. Other GUI front
ends exist as well. One of my major projects these
days is a cross-platform (Win32/Unix) application, so
my source-control system must be able to work with
Windows and Unix clients. Other systems offer
cross-platform support as well, but many do not.

Client-server model. Many other systems have this as
well. Why would it be essential? If you have
developers spread around the country or around the
world, this is essential. Even simple things like
wanting to work on your code from home via a 56K
dialup benefit greatly from c-s.

Strong and fully-featured command-line client allows
powerful scriptability.

Good support from huge CVS community. The mailing
lists for cvs and its derivatives provide better
support than I have received from the paid support
subscriptions of many commercial products. You have to
endure a few flames from time to time, but the
community is basically quite helpful. There are more
flames on the main cvs mailing list and almost none on
the CVSGui and cvsnt mailing lists.

Since so many people depend on CVS, bugs tend to get
fixed very quickly.

CVSWeb allows nice web browsing of source-code
repository, including source listings, diffs between
versions, revision history, and log comments.

CVS is one of the older source-management systems
around, especially if you consider that it is built on
top of RCS. This means that it is well-understood and
that serious bugs have been well beaten out of it. It
also means that it uses pretty old technology for
delta-compression and branch-management, which hurts

Weaknesses of CVS:

There is no integrity-checking for the source-code
repository. Amazingly, there are no checksums or
signatures to allow the integrity of the source-code
repository to be verified. This means that the
repository can become corrupt and it can be months
before you realize it. This has never happened to me,
but it is imperative that you back up the repository
to permanent storage (burn CD-Roms) regularly because
of this danger.

Check-outs and commits are not atomic. The repository
will not become corrupt, but if you are checking in a
number of files and one file fails, the system does
not roll back the other files in the repository to
their state before the checkin. Similarly, CVS can't
roll back an update operation if it generates a

CVS manages revisions on a file-by-file basis. You can
apply "tags" to mark revisions across a whole project,
but there is very little support for dealing with a
project as a whole.

CVS has very poor support for distributed source
control (maintaining several different repositories
and keeping them synchronized with one another. I am
aware of some systems, such as rsync, which begin to
deal with this problem, but no serious source-control
system I know of addresses this problem adequately.

CVS is oriented towards text files. In cross-platform
development, it is easy to mess up the management of
binary files (e.g., graphics such as icons).

Security is a bit spotty unless you either: (a) have a
Windows NT or 2K CVS server and only WinNT or 2K CVS
clients; or (b) have a Unix cvs server.

It is a bit difficult to learn about the myriad of
configuration files that control CVS's behavior. The
official manual (by Per Cederqvist) is a bit out of
date, so sometimes it's necessary to ask on the
mailing lists or look in FAQs about behavior that
seems a bit strange.


BT Yahoo! Broadband - Free modem offer, sign up online today and save £80

reply via email to

[Prev in Thread] Current Thread [Next in Thread]