Version tools

If it happens once, it's a bug.
If it happens twice, it's a feature.
If it happens more than twice, it's a design philosophy.

RCS

The Revision Control System (RCS) is a collection of programs for managing
source files, tracking the changes (or revisions) made to the files.

By keeping a list of changes made to each revision of a file, the developer
can check or recreate any version of the file. Comments and authorship
information can also be logged, which is useful in a project with multiple
developers.

The main tools are rcs, ci, co, ident and
rlog.
Some editors, such as EMACS, have an RCS mode that automates much of the RCS
process.

The file is now locked by you, which means that only you can
make changes to the file. This prevents other developers who have access to
the file modifying it simultaneously, which could be disastrous.

When you are finished making the new modification, use ci to
check the file make in, with comments about the new revision:

Note: RCS is also very useful for managing Linux configuration files,
such as those found in /etc.

CVS

CVS (the Concurrent Versions System) extends RCS from controlling
revisions of individual files in one directory to controlling a software
release, which can comprise a collection of subdirectories of files.

Any large software project is ideally suited to using CVS instead of
RCS, as CVS has support for concurrent editing of files by developers, and
access to previous releases by revision tags or date stamps.

CVS also offers anoncvs facilities, allowing remote developers
access (possibly read-only) to source code, which is very useful for Internet
based software projects. Many projects, including
GNOME and
Enlightenment, now offer testers
CVS access to development code, which allows users access to cutting edge
software releases.

The free BSD projects (FreeBSD,
NetBSD and
OpenBSD) allow you to upgrade the
operating system and ports via a CVS mechanism called cvsup.