Subversion 1.3 (December 2005)
Release 1.3 brought path-based authorization controls to the svnserve server, matching a feature formerly found only in the
Apache server. The Apache server, however, gained some new logging features of its own, and Subversion's API bindings to
other languages also made great leaps forward.
Subversion 1.4 (September 2006)
Release 1.4 introduced a whole new tool—svnsync—for doing one-way repository replication over a network. Major parts of
the working copy metadata were revamped to no longer use XML (resulting in client-side speed gains), while the Berkeley DB
repository backend gained the ability to automatically recover itself after a server crash.
Subversion 1.5 (June 2008)
Release 1.5 took much longer to finish than prior releases, but the headliner feature was gigantic: semi-automated tracking of
branching and merging. This was a huge boon for users, and pushed Subversion far beyond the abilities of CVS and into the
ranks of commercial competitors such as Perforce and ClearCase. Subversion 1.5 also introduced a bevy of other user-focused
features, such as interactive resolution of file conflicts, sparse checkouts, client-side management of changelists, powerful new
syntax for externals definitions, and SASL authentication support for the svnserve server.
Subversion 1.6 (March 2009)
Release 1.6 continued to make branching and merging more robust by introducing tree conflicts, and offered improvements to
several other existing features: more interactive conflict resolution options; de-telescoping and outright exclusion support for
sparse checkouts; file-based externals definitions; and operational logging support for svnserve similar to what mod_dav_svn
offered. Also, the command-line client introduced a new shortcut syntax for referring to Subversion repository URLs.
Subversion 1.7 (October 2011)
Release 1.7 was primarily a delivery vehicle for two big plumbing overhauls of existing Subversion components. The largest
and most impactful of these was the so-called “WC-NG”—a complete rewrite of the libsvn_wc working copy management
library. The second change was the introduction of a sleeker HTTP protocol for Subversion client/server interaction. Subver-
sion 1.7 delivered a handful of additional features, many bug fixes, and some notable performance improvements, too.
Audience
This book is written for computer-literate folk who want to use Subversion to manage their data. While Subversion runs on a num-
ber of different operating systems, its primary user interface is command-line-based. That command-line tool (svn), and some ad-
ditional auxiliary programs, are the focus of this book.
For consistency, the examples in this book assume that the reader is using a Unix-like operating system and is relatively comfort-
able with Unix and command-line interfaces. That said, the svn program also runs on non-Unix platforms such as Microsoft Win-
dows. 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 that of its Unix counterpart.
Most readers are probably programmers or system administrators who need to track changes to source code. This is the most com-
mon use for Subversion, and therefore it is the scenario underlying all of the book's examples. But Subversion can be used to man-
age 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 a version control system, we've also tried to make it
easy for users of CVS (and other systems) to make a painless leap into Subversion. Special sidebars may mention other version
control systems from time to time, and Appendix B, Subversion for CVS Users summarizes many of the differences between CVS
and Subversion.
Note also that the source code examples used throughout the book are only examples. While they will compile with the proper
compiler incantations, they are intended to illustrate a particular scenario and not necessarily to serve as examples of good pro-
gramming style or practices.
How to Read This Book
Preface
xix