2. CVS
• Versioning systems are software tools that
allow multiple developers to work on projects
concurrently and keep track of changes made
to the code.
• The first such system was the Revision Control
System (RCS) written in the early 1980s by
Walter Tichy of Purdue
3. • It used diffs to keep track of changes just like later
systems, but was limited to single files.
• The first system that could handle entire projects
was written by Dick Grune in 1986 with a modest
objective in mind. He simply wanted to be able to
work asynchronously with his students on a
compiler project.
• Grune implemented his system using shell scripts
that interacted with RCS and eventually it evolved
into the most widely used versioning system, the
open source Concurrent Versions System, commonly
known as CVS.
4. • Brian Berliner initiated the C implementation of CVS
in mid-1989 by translating the original shell scripts
into C.
• Later contributors improved the system,
noteworthy being Jim Kingdom’s remote CVS
implementation in 1993 that “enabled real use of
CVS by the open source community”.
5. Overview of CVS
• CVS has been crucial to open source development
because it lets distributed software developers
access a shared repository of the source code for a
project and permits concurrent changes to the code
base.
• It also allows merging the changes into an updated
version of the project on the repository and
monitoring for potential conflicts that may occur
because of the concurrent accesses.
6. • Remarkably, at any point during a project
development, any previous version of the project
can be easily accessed, so CVS also serves as a
complete record of the history of all earlier versions
of the project and that of all the changes to the
project’s code. It thus acts like what has been
metaphorically called a time machine.
• CVS, which is available for download from
www.nongnu.org/cvs, is the most widely used
version control tool.
7. • As Fogel and Bar observe, “CVS became the free
software world’s first choice for revision control
because there’s a close match . . . between the way
CVS encourages a project to be run and the way
free projects actually do run.
• CVS serves two basic functions.
• On the one hand it keeps a complete historical
digest of all actions (patches) against a project and
on the other hand it facilitates distributed
developer collaboration.
8. • CVS is a client-server system under which software
projects are stored in a so-called repository on a
central server that serves content to possibly remote
clients.
• Its client-side manifestations let multiple developers
remotely and concurrently check out the latest
version of a project from the repository.
• They can then modify the source code on the
client(s) as they see fit, and thereafter commit any
changes they have made to their working copy back
to the central repository in a coordinated manner,
assuming they have the write privileges to do so.
This is called a copy-modify-merge development
cycle.
9. • CVS, versioning tools followed a lock-modify-unlock
model for file changes.
• Only one developer could have access to a
particular file at a time other developers had to
wait until the file being modified was released. This
kind of solo, mutually exclusive access requires
considerable coordination.