I remember the first day I saw VSS, and I wondered how on earth I worked without it, and how I ever kept up with all those copied source folders before. After living with VSS for years, though, it's limitations become obvious. The biggest downfall of VSS in my opinion is when the need arises to branch, and VSS offers little to no support.
So what do you do when you outgrow VSS? There are many options for more capable version control systems, but in many cases the community seems to pick Subversion (svn), and does so because of it's speed, branching support, and of course it's open source price. After reading the praises, I decided it was time to learn me some svn. Having just come off reading the pragmatic series book on unit testing, I decided to read the reviews on their entry into the svn arena, Pragmatic Version Control Using Subversion. They were good. Very good. I bit, and ordered the book Monday.
I got it yesterday, and pretty much didn't put it down until I was done. Knowing very little about svn yesterday, I can say this book is a fantastic introduction to svn, and version control in general. In true pragmatic form, Mike Mason walks the reader through version control and svn in a fast but thoroughal manner, covering not only the hows, but more importantly the whys.
The book tackles the topic of source control from the beginning, walking the reader from the first checkin, all the way to merging branches back into the trunk. It covers all of these issues in a situational sense instead of like a reference manual, making the book very easy to read from cover to cover. The book then goes on to cover integration with apache, and some of the more popular 3rd party tools. The book then ends out with a complete command reference.
I really enjoyed this book, and feel like I couldn't have had a better introduction to svn, as well as getting some fantastic tips on how to use version control effectively. I would highly suggest this book to anyone looking to learn svn.
That being said, I do wish the book had covered ignoring files in more detail. This aspect of source control is huge, and the book only touches on it in a couple places. From what I can tell there are 3 ways to handle ignores, in the repository itself, in local svn config, and in a given client (eg : tortoisesvn). I would have liked to read about these different methods, and some of the pros and cons of each method. I did notice this covered in some thoughtworks content here, but I chose to use John Elliot's exclusion list in my client for now. I'll definitely have to discuss these different methods with our team, and see what fits us best.
Also, switching to svn either means saying goodbye to web projects, or using a hacked client, since svn manages its data in a .svn folder, and this does not work with vs.net. I chose to change my local projects to class libraries as this tutorial shows, which makes the projects load MUCH faster, and also breaks the dependancy between IIS and my projects. Killer. Not sure how this methodology will fly in the office, though. Hopefully I can convince my peers of the benefits of this method.
All in all, get this book if you want to learn svn. It's cheap, a quick read, and another killer title in the pragmatic series. With this book in hand I've now moved all my personal code to svn, and merged a few branches for practice. Way to go guys!
Remember Me