When I started this blog, I knew immediately that I needed some kind of source control system to keep revision history and keep me organized. My first impulse was to use Perforce. It is what we use at work, and I am one of the admins, so I am very familiar with that system. Furthermore, Perforce is free for up to two users and five clients, so it will meet my needs.
I few weeks into blogging, I was talking to my boss, and he mentioned Mercurial. We had purchased some internal tool that allowed us to host Mercurial projects, and long story short, I decided to give it a shot. Don’t get me wrong, Perforce is a great tool, I have been using it for many years, and I love it. But the truth is, it is a little cumbersome for small projects with only one contributor. So, I decided to give Mercurial a fair shot and went with it for all the source code management for this blog.
It took me a little bit to get used to the paradigm shift, and in all honesty, I would not stick with it if it wasn’t for Joel Spolsky’s quick tutorial “Hg Init: a Mercurial Tutorial”. The tutorial gives you a crash course on Mercurial and distributed source control systems, plus it tells you right-away which things you will like and dislike if you are used to a centralized source control system and why you should stick to it for a while to understand the advantages.
So, that’s what I did. I started using it, and as I did, I found great advantages to distributed systems even working on my own. Let’s start by saying that anyone writing code should use source control. No matter how small of a project or how small of a team you have, you will be crazy if you do not use it. An immediate advantage of distributed systems is maintenance. Once you install it, you are done. Backups are as easy as copying a folder to a backup place, which means if you already have a backup solution (and you will be crazy not having one), you already have a backup of your entire repository.
The second advantage is, distributed source control systems are free. No expensive licensing fees. So there is no excuse not to use one. To be fair, Perforce is free for up to two users and five clients; however, there is a lot more maintenance and requires you set some kind of server which you need to maintain.
After have been using, successfully, Mercurial for a few months, getting used to it, and liking it, I thought it was time to jump all in and look for a hosting solution that I can use to post the source for this blog. I started looking around, and it seems the one that makes more sense is BitBucket. Not only is free, at the basic level, but it gives me unlimited private and public repositories, which allows me to share all the source code with you.
So, I decided to create an account and post all the code for Civilized Development there. I started a brand new repository that contains all the source code I ever posted to this blog. If you are a Mercurial user, you can “clone” the repository and download it locally. If you don’t feel adventurous, you can still access the code through this link. You will see a “get source” option on the top-right side of the page, which will allow you to download a ZIP, gz, or bz2 file with the entire source code (see the following screen-shot).
Moving forward, my intent is to provide the source for this blog through this repository. It make my life easier to manage it that way, plus it provides more options for future advancements. There are some other problems with my current solution, which I will not bore you with, and I think this might be something that will work for all of us. Still, I do not want to disappoint you, so your feedback is very important to me.
If you are a Mercurial user, I will like to hear from your experience. If you are not and find this way of posting the source code painful, let me know. I will try to ease your pain. All I ask is that you give it a fair shot like I did, and that you provide me will all your constructive criticism, so I can improve the experience for all of us.