“If C gives you enough rope to hang yourself, think
of Subversion as a sort of rope storage facility.”
—Brian W. Fitzpatrick
In the world of open-source software, the Concurrent
Versions System (CVS) has long been the tool of choice for
version control. And rightly so. CVS itself is free software,
and its non-restrictive
modus
operandi
and support for networked
operation—which allow dozens of geographically dispersed
programmers to share their work—fits the collaborative
nature of the open-source world very well. CVS and its
semi-chaotic development model have become cornerstones of
open-source culture.
But like many tools, CVS is starting to show its age.
Subversion is a relatively new version control system designed
to be the successor to CVS. The designers set out to win the
hearts of CVS users in two ways: by creating an open-source
system with a design (and “look and feel”) similar
to CVS, and by attempting to fix most of CVS's noticeable flaws.
While the result isn't necessarily the next great evolution in
version control design, Subversion
is
very
powerful, very usable, and very flexible.
This book is written to document the 1.2 series of the
Subversion version control system. We have made every attempt to be
thorough in our coverage. However, Subversion has a thriving
and energetic development community, so there are already a
number of features and improvements planned for future versions
of Subversion that may change some of the commands and specific
notes in this book.
This book is written for computer-literate folk who want to
use Subversion to manage their data. While Subversion runs on a
number of different operating systems, its primary user
interface is command-line based. It is that command-line tool
(
svn
) which is discussed and used in this
book. For consistency, the examples in this book assume the
reader is using a Unix-like operating system, and is relatively
comfortable with Unix and command-line interfaces.
That said, the
svn
program also runs on
non-Unix platforms like Microsoft Windows. With a few minor
exceptions, such as the use of backward slashes
(\
) instead of forward slashes
(/
) for path separators, the input to and
output from this tool when run on Windows are identical to its
Unix counterpart. However, Windows users may find more success
by running the examples inside the Cygwin Unix emulation
environment.
Most readers are probably programmers or system
administrators who need to track changes to source code. This
is the most common use for Subversion, and therefore it is the
scenario underlying all of the book's examples. But Subversion
can be used to manage changes to any sort of information:
images, music, databases, documentation, and so on. To
Subversion, all data is just data.
While this book is written with the assumption that the
reader has never used version control, we've also tried to make
it easy for users of CVS to make a painless leap into
Subversion. Special sidebars may discuss CVS from time to time,
and a special appendix summarizes most of the differences
between CVS and Subversion.