Practical Subversion, Second Edition

16 March 2007

Apress was again so kind as to send me a copy of Practical Subversion, Second Edition. I had read the first edition a couple years ago and gleaned lots of good information, so this time around I was already pretty familiar with the subject material. Today, I use Subversion to track the source for my various Java projects.

The introduction and crash course chapters provide a great primer to the basics of version control -- any version control. Since the newest versions of Subversion have added support for features like locking, the authors added material on these as well. In these chapters I learned about these new features and their recommended application.

The administration and migration chapters ensure that you'll be able to handle any aspect of keeping your repository running. I know lots of tools to help me when I need them, but I've not needed most this knowledge yet, since my usage of Subversion remains pretty simple. I was delighted to find that there was a new backend to the repository (FSFS) which doesn't suffer the complexities of the old BerkleyDB backend. I found my newer repositories were created using this backend, so I went back and converted all my old repositories.

I only skimmed the chapter on Apache integration, since I accomplished most of that with the previous version of the book.

I greatly enjoyed the chapter on best practices. I love these more academic discussions trying to learn the big picture. Everyone should read this chapter (again, for any version control system). Lots of people have already figured out the best ways to structure and use a repository, so take benefit of their experiences.

In the chapter on tool integration, I found Trac! It's a repository browser, wiki engine, and simple issue tracker. This was the real jewel for me in this chapter, and I happened upon it exactly when I was looking for such a tool. ViewVC and SVN:Web are covered in more detail, but I think the book would have probably done well to concentrate more time on Trac. Otherwise, the authors provide some quick pointers to get you started integrating your IDE with Subversion. I'll also come back to this chapter when I need to get Ant pulling source code for a continuous build system.

Throughout this newer edition of the book, there are scripts and add-ons highlighted to make your life with Subversion easier. There are many more noted here than in the previous edition. You can definitely tell that more people are using Subversion and this book does well keeping up with the advances that those people have made.

The final chapter of the book talks about using the Subversion APIs. In my review of the first edition of this book, I had predicted that knowing these APIs could be useful for me to do complex manipulations and reporting on the repository, but in reality, I've still not touched them. To be honest, I probably never will. I just don't need that much power, and other people are doing good things for me (see Trac).

The appendices include the obligatory reference for all the commands in case you're not actually sitting at your computer with the built-in help command. Otherwise, there's the quick comparisons of Subversion to other version control systems. Each system is only covered in a couple pages, but this is especially useful if you're migrating and still think primarily in another system.

These days, I mostly interact with Subversion through the Subclipse plugin for Eclipse, but I often drop into a shell when bootstrapping a new repository and project (and sometimes for entertainment, I just struggle trying to get Subclipse to do the right thing). That said, I wouldn't carry around a paper copy of this book in my bag on a daily basis for my needs. I think daily operation with Subversion is relatively easy. If I was the administrator of a repository for lots of other people, it would be a different story -- this book would never be far from my reach.

Filed Under: Technology Books Computers Linux