Table of Contents

How to Read this Book
Conventions Used in This Book
Typographic Conventions
Organization of This Book
This Book is Free
From Michael L.H. Brouwer

##TODO witty open quote here” —##TODO Witty Quote Author

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.


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.