A couple months ago my job started having me mess around with Monotone quite a bit. For those that don’t know what Monotone is, it is a version control system just like SVN. Before I go into my experience with SVN, I’m going to talk a bit about what both Monotone and Subversion are and what they do.
They are known as version control systems. They use “revisions” which allows any user to manage their code more easily. Revisions are exactly what they sound like. A revision happens when a piece of code is altered from what it originally was. If you’re at revision 12 and then you change any of the files under that revision, once the files have been committed, then the revision is incremented to 13. If you take a look at the difference between revision 12 and 13, you’ll only see the changes you’ve just made when you committed. It’s a pretty easy concept to understand but sometimes you just need to actually do it to grasp a better knowledge of how it works. There are plenty of HowTo’s out there to get you started.
Anyways, Monotone for me seemed to be great at first. I liked it a lot. It was really simple to use but later down the road it became more apparent that it was impractical for what I needed it for. I won’t go into very deep details about exactly what was wrong about Monotone because there is no major “flaw” that sums it up(at least for me). It just seems that Monotone is the best for very simple projects because it can get a brand new beginner up and running/checking out/committing, etc in a very short period of time. However, if you’re developing for a larger project it seems that it becomes more and more difficult to find the “exact” way to do what you want to accomplish. Part of this reason is because of the lack of support. I know it has documentation but we all know that doesn’t mean much. It just seemed to me that when I had a problem and looked it up there weren’t that many results out there that were reporting what I was having issues with. Though maybe that’s just me.
SVN has granted me a way better perspective on version control and how helpful it can be. When I had issues and looked them up, I seemed to get slews of page results returning back that contained mostly what I was looking for. Committing is also much easier for me in SVN than Monotone. In Monotone you have to keep track of syncing, updating, and committing whereas in SVN I just have to make sure I update before I make changes and then commit afterwards.
I don’t mean to make this sound like a Monotone v.s. Subversion article because it really isn’t. I’m simply throwing out to light my experience between the both of them. Version control is something that is beneficial far beyond belief. If you haven’t been using it, then take it from me and start learning how to now. The longer you wait and think “I’ll do it when I’ve got more projects to maintain or need it for work” the further you’re setting yourself back in the long run.
As for my overall opinion, SVN is the best out of the two choices because of support and expansion. Although, if you’re just doing some light stuff it really can’t hurt to setup Monotone instead. I’d just make sure if you learn to use Monotone, you learn to use SVN sometime soon after. You know never when you might need it.
If you happen to want to learn more about SVN and getting started, take a look here: My Subversion Reference
That website has a great beginner reference. It basically lists out and displays the most common commands that are used daily by those who choose Subversion as their Source Control. It can’t be much simpler!