The last time I reviewed a book, it addressed pragmatic version control using the concurrent versions system (CVS) [1]. This book addresses yet another version control system, called subversion. Thus, it will be interesting to compare these two books, as well as the systems they describe.
Once you pass the book title, which is somewhat surprising at first glance, you will notice that this book is twice the size of the CVS one. Does this mean that subversion is twice as complicated as CVS, or that the author is twice as talkative? The truth lies somewhere in the middle: subversion is much more powerful than CVS, and Rooney needs more length to describe everything. Sometimes, he is even on the verge of becoming boring, but only on the verge. In fact, one would welcome some lightness in the explanations and examples. The author can display some good humor, but does so very infrequently.
This is a technical reference book about a system that is extremely useful, but not spectacular at all. There is no cool graphical interface, and there are no bells and whistles. Only the important, strong, and reliable structure and tools are described. The author was first an end user of subversion, then progressed to being a project developer. Thus, he has a very thorough knowledge of his subject. Sometimes, in the beginning chapters, this familiarity with the subject induces him into alluding to some points that will be described only several chapters later. He usually tells us that these points will be covered later, but sometimes he forgets.
These are not important defects. The book is complete, well organized, and clearly written. Subversion is compared to other version control systems. The eight chapters cover what is needed, in the correct order: “Introducing Subversion,” “A Crash Course in Subversion,” “Repository Administration,” “Migrating from Other Version Control Systems,” “Advanced Apache Integration,” “Best Practices, ” “Integrating Subversion with Other Tools,” and “Using the Subversion APIs.”
Two appendices provide a command glossary and a comparison to other version control systems. The 18-page index is very useful. There is no bibliography, however, and the only references to sources outside the book are uniform resource locators (URLs) interspersed in the body of the text.
After reading the book, it becomes clear that subversion should be the system of choice for most people needing version control. It is more complicated than CVS, but not by an order of magnitude, and it has a lot of advantages over CVS: less required network traffic, faster tagging and branching, support for atomic changes, the availability of an application programming interface (API) for third-party programs, and the possibility of versioning directories. This book is a must-read for anybody who is considering making the change from CVS to subversion.