My Choice of SCM: Git vs. Mercurial
If you Googled “Git vs. Mercurial”, you will see a long list of pages that compare Git and Mercurial. Well, I think I’m writing one of those too.
In past, normally when I was developing, I will just use local copy and backup and use diff/WinMerge utility to compare and merge files. My life change when I starting to know SCM/VCS.
I started using SCM for the first time when I start looking into Robocode’s source (as per Pavel Savara’s request to be a tester), which use Subversion. I know basic of the operation before (commit and checkout mostly), but I had never use any of it prior than that time. As I continue using SVN for Robocode’s source, I slowly learned more about SVN including what is branches, tags and trunk. I learned about patch later.
Since then, every time I develop some project, I need to have a VCS repository for my code (either local or hosted), all are SVN since I don’t know others. I knew that there is CVS, but its idea really confused me. I also knew that CVS is dated, and many projects that used to use CVS have already migrated/are migrating to SVN or other VCS.
My view of VCS changed when simple-php-framework moved to GitHub. I learned that there are also Git, Mercurial and Bazaar, which are DVCS. I still perfectly happy with SVN, so I didn’t really care about them, as long as GitHub provide a tarball link for me.
My first project which I use hosted SVN is napv-ce. I use Subversive plug-in for Eclipse as my SVN client. I hosted my project on Google Code. As I develop, the commit part really annoyed me since sometimes it just fails. And sometimes I don’t want to connect to the internet. The idea of DVCS starting to get back into my head.
I know before that Google Code has launched Mercurial server, but many projects use Git. I read many of comparing article including Google’s one to decide. The reason for this mainly is that cafe-grader had just moved to Gitorious.
Since I’m starting a new project, I need to decide whether to continue use SVN, or switch to either Git or Mercurial. (Bazaar wasn’t on my list at all since it’s way too slow). Git has several advantages: its large use and stable project hosting, and many of project which I am watching use Git. Mercurial has another advantage: it is supported by my old project hosting, Google Code. SVN has another advantage: most developers know how to use it =)
But I considered one more thing: If I use Git I will have to hosted my project on either GitHub or Gitorious, which is space limited (Google Code also has space limited, but I can request for more). I wasn’t considering SourceForge.net at all since I have already decided to abandoned that place. It is really sloooow.
Still, I could’t decide. Just then, I saw this web page. Then I decided, I’ll use Mercurial on Google Code =)
Anyway, despite the fact that I have chosen Mercurial for my project, I have TortoiseCVS/SVN/Hg/Git/Bzr just in case so I can checkout/clone any code from any project which use any VCS. Because I still have to clone/pull some Git repository so I can peek at their source code (they hosted in their own Git server), and I still have to use SVN for Robocode =)
about 1 year ago
Git-fast-import.
I really don’t need to say anything else, do I? Unless I’m mistaken, git-fast-import will let you gobble up almost any VCS with git.
Yours truly
Burnie