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.

Like many tools that have lasted 25 years, 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.

For some people, a plain successor to CVS wasn't good
enough. One of those people was Chia-liang Kao. He took a year
off his regular work to sit down and write a version control
system that would help raise his own productivity once he got
back to doing paid work. The result of his labor, and more
recently that of an entire community of users and developers is SVK.
While Subversion set out take over CVS's user base, SVK attempts
to provide an answer for many others - including people who had
already defected to another version control system
and users who had never before used version control. SVK is written
in Perl and uses the underlying revision-tracking filesystem
built by the Subversion project.

This book documents SVK version 1.04. We have made every
attempt to be thorough in our coverage. However, SVK has a thriving and
energetic development community — a number of features and
improvements planned for future versions of SVK may change some
of the commands and specific notes in this book.

Audience

This book is written for computer-literate folk who want to
use SVK to manage their data. While SVK runs on a
number of different operating systems, its primary user
interface is command-line based. It is that command-line tool
(svk) 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 svk 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 sysadmins who need
to track changes to source code. This is the most common use
for SVK, and therefore it is the scenario underlying all
of the book's examples. But SVK can be used to manage
changes to any sort of information: images, music, databases,
documentation, and so on. To SVK, 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 or Subversion to make a painless leap
into SVK. Special sidebars may discuss CVS or Subversion from
time to time, and a special appendix summarizes most of the
differences between CVS, Subversion and SVK.