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.
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
Technical books always face a certain dilemma: whether to cater to top-down or to bottom-up learners. A top-down learner prefers
to read or skim documentation, getting a large overview of how the system works; only then does she actually start using the soft-
ware. A bottom-up learner is a “learn by doing” person—someone who just wants to dive into the software and figure it out as she
goes, referring to book sections when necessary. Most books tend to be written for one type of person or the other, and this book is
undoubtedly biased toward top-down learners. (And if you're actually reading this section, you're probably already a top-down
learner yourself!) However, if you're a bottom-up person, don't despair. While the book may be laid out as a broad survey of Sub-
version topics, the content of each section tends to be heavy with specific examples that you can try-by-doing. For the impatient
folks who just want to get going, you can jump right to Appendix A, Subversion Quick-Start Guide.
Regardless of your learning style, this book aims to be useful to people of widely different backgrounds—from those with no pre-
Preface
xviii