My First Week with Mercurial (hg)

I haven’t completely disrupted my programming life in a couple of days now, so I have decided to make the switch from Subversion to Mercurial for my personal source control needs. Don’t worry TFS, you are still my number one choice for partially solving my professional source control needs.

There is nothing really driving my change away from Subversion except the huge buzz around Distributed Version Control. My projects are not large or distributed and I don’t branch and merge frequently, so I am looking at Mercurial as a training opportunity more than a way to scratch an itch. The only real pain point I have with my home Subversion server is that I have to manage my own backups, and I could find a svn host if it was really that big of a timesink.

Initial Thoughts

  1. It’s a good thing that I started working more in the command line last year setting up automated builds, otherwise I might find this black screen weird.
  2. –m is my friend. I find the whole “add your comment to this file in notepad and then save it” thing very counter-intuitive.
  3. BitBucket.org is cool, but is intermittently slooooooooow. Like fifteen minutes to push a single changeset slow. Plus, I created my account with OpenID and it took four very sloooooow failed pushes to realize that my username and password were not my OpenID username and password. Which actually makes sense now that I have thought about it, but drove me crazy for the better part of an hour.
  4. I really need to figure out how to use DiffMerge as my diff tool. My eyes are not used to reading code in an 80×25 window.

End of the Week Thoughts

  1. I kind of like not having to right-click around in Windows Explorer to check-in files. I realize I didn’t have to use TortoiseSVN, and that I could have and still can use the command line for Subversion, but it seems like too much effort to go back now. ;)
  2. Console is much better then the standards Windows command prompt. Being able to cut and paste easily, change color themes and open multiple tabs makes using the command line much more friendly. Make sure to adjust your keyboard shortcuts to Ctrl+C and Ctrl+V for cutting and pasting.
  3. I adjusted my mercurial.ini to use DiffMerge as my diff tool. I haven’t had to work through a merge yet, but it is much easier for me to compare diffs in DiffMerge then at the command prompt.
  4. I didn’t configure Mercurial to exclude my bin and obj folders as well as the some of the user specific files that Visual Studio generates so I had to go back through and remove them later. I found this answer on StackOverflow for a list of files and folders to exclude. I currently have this defined per repository in the .hgignore file, but I will probably review it and add it to my mercurial.ini file.
  5. I haven’t had a chance to work in a team environment yet, so I am a little concerned about the workflow around branching and merging. This might be because I am still a little uncomfortable working without a GUI to hold my hand.

My overall impression is a sort of good-natured apathy. Mercurial is new, therefore interesting, yet not obviously better than Subversion for my situation. I have already migrated my projects from Subversion to Mercurial so I’ll keep using it. BitBucket.org is nice, and I don’t have to worry about maintaining my own backups and keeping a SVN server running.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Reddit
  • DotNetKicks
  • Technorati
  • TwitThis

Leave a Reply