MacHg is free for private non-commercial use, but all donations are of course appreciated.

However, if you use MacHg in a commercial setting, the author of this package humbly asks that you make a donation of US$20 per seat. MacHg is 'DonationWare'. This donation is not compulsory, but it would sure help defray my costs of developing MacHg. The full license details are given here.

MacHg has taken some considerable time to develop, please allow me to continue its development and support the author by donating. All monies will go towards new features, enhancements, hosting costs, and bug fixes.


If you would like to contribute in any way to MacHg, that would be fantastic. Please get in touch with me! I would be grateful for help in the following areas
  • Fixing issues and adding new features. (Cocoa coding, with lots and lots of scope here)
  • Testing.
  • Documentation (MacHg has some documentation, but it would be nice to have much more complete documentation.)
  • Mercurial extension writing (There are a few extensions I could use help with: for example, around permissibility of dragging and dropping in history rewriting, etc.)
  • Translating (Especially those who have experience using Apple's polyglot tool, etc.)
  • Web designers (There are a number of enhancements to be made to web pages, wikis, etc.)
  • Graphic design (Icon design, etc.)


In building MacHg in my spare time, I have used a number of guides, tutorials, blog posts, writeups, instructions, and other sample projects out there. Among the major tools used are BWToolkit by Brandon Walkin, RegexKitLite by John Engelhart, Sparkle Framework by Andy Matuschak, FSEvents Objective-C Wrapper by Stu Connolly, MAAttachedWindow by Matt Gemmell, Resolving paths with aliases and symlinks by Matt Gallagher and DTCPathView by Daniel Todd Currie. Of course, most importantly of all is Mercurial itself by Matt Mackall and the team. Thanks to all of you! The formal licenses and credits are here.

Historical Motivation

MacHg was born from my desire to:
  • Learn Cocoa, and one can only really learn a system like Cocoa through doing a non-trivial project.
  • Play with the garbage collection auto-zone system in Cocoa, in a c-like language.
  • Experiment with threads, making a program fundamentally multi-threaded, and hence learn about grand central dispatch.
  • Learn Mercurial in depth.
  • Have a tool I could use with Mercurial day-to-day. (I always find command line tools a lot slower and more convoluted than a good GUI interface...)