No, I’m not talking about the act of overthrowing. I’m talking about the version control tool. Many years ago I was introduced to the concept of version control, and I loved the idea of it. However, at the time, the implementations available (especially the Microsoft-OS-Based ones) were sub-par.
When I decided to release Vanilla to the public a couple of years ago, I started using Subversion to manage my code-base. At the time, I was the only developer working on the project. This *kind of* defeats the purpose of version control, but it worked great for me because I had an instant back-up of my code across various machines; and I knew that no matter what happened, I wouldn’t lose all of my hard work.
Over the years, the best thing I’ve noticed about Subversion is just how little you have to use it. I truly believe that any great technology should be judged by how much it stays out of the way. It’s there, doing it’s thing, and you almost never have to touch it or even remember that it’s there. Subversion falls into this category so well that I have to go back to the book almost every time I need to do something other than committing my changes or updating to the latest ones from the repository.
I recently had a massive problem on one of my client installations. The system was live, and one of the pages that they had previously not been using started to get used. This page, as it turned out, had a huge number of memory leaks. SQL Server started choking, and before I knew what was going on, my customers had been completely locked out of their database. The real issue was that I hadn’t done an upload to the live system in over a month. This meant that the development version of the application had over a month’s worth of changes in it that had not yet been fully tested and could not be pushed to Live. If it wasn’t for subversion, I would have been completely screwed.
Here’s how I fixed the problem. I checked out the latest copy of the codebase to a folder on my computer. Then I updated to the revision of the codebase that was committed *just* before my last upload to Live. Then I worked on that codebase, fixed the problems, recompiled and replaced the Live system with the fixed version.
I had the problem fixed in a couple of hours thanks to this awesome tool that never gets in my way and is always there, working, when I need it. So, yeah. Subversion? I’m a fan.