CVS actually uses RCS underneath. CVS is a lot more powerful tool and
can control a complete source code tree.
It is very strongly recommended that you use CVS, because you can greatly customize CVS with scripting languages like PERL, Korn and bash shells.
See the sample korn shell scripts at
Advantages of CVS:
CVS is decentralized so a user checks out files/directories
from the repository
and have his own separate stable source directory tree.
CVS can "STAMP" releases of an entire project source tree.
CVS can enable concurrent editing of files.
CVS can be greatly customized to enable strong locking of files
via shell scripts or PERL scripts.
CVS supports weak locking with the command 'cvs watches' and also
no locking permitting concurrent editing of files.
Disadvantages of CVS:
Needs a little more administration than RCS.
Very highly sophisticated and complex system. It is "State of the Art"
technology. The cvs software is a very advanced and capable system developed
over a very long period of time (it took several years!!). It took about 20 to 30 years
of research to develop CVS and it is still evolving!!
Has a large number of commands and command options, hence a steeper
learning curve for beginners. The shell scripts at
can ease usage.
Advantages of RCS:
RCS is very simple to setup, with less administrative work.
RCS is used in a centralized area where everyone works.
RCS is useful for simple systems.
Very strong locking of files - concurrency eliminated.
Downside of RCS:
Concurrent development by multiple developers is not possible due to file
locking and being limited to a single working directory. Because of the
single working directory limitation, changes to files by multiple developers can
cause failure of the 'make' command.
Cannot stamp releases of an entire software project.
This document also has
shell scripts which provide
simple commands to check-out, check-in, and commit files.
See shell scripts at
For RCS see the RCS mini-howto on the Linux cdrom:
ls -l howto-6.0-*.noarch.rpm
rpm -qpl howto-6* | grep -i rcs