Apr 29 2009

Murky: A Mercurial Client App

After repeated prodding, I’ve finally gotten off my butt and released Murky, a GUI client app for the Mercurial version-control system. I’ve been working on it for over a year, and using it a lot myself; I had always planned to open-source it “when it’s ready”, but never actually got around to doing the necessary cleanup and uploading.

I’m happy to say that Murky is finally blinking in the light of day, with its own Mercurial [natch] repository on Bitbucket.

Setting Expectations

Murky isn’t “done”, and this isn’t a 1.0, or even a beta, release. I’m not even providing a compiled app to download, just the source repository. No one but me has ever tested it. About nine months ago Murky became “good enough” for what I usually do, and I’m a happy customer, but I’ve lost the impetus to keep adding things to it. I hope some other people will grab the baton and improve it further. Then we can throw a party for a real 1.0 release, with several names on the About box.

Obligatory Screenshot

Features

Here’s what it can do so far:

  • Create a new repository from an existing folder
  • Clone a remote (or local) repository
  • View the revision history (log) of a repo as a table view, complete with * a visual graph showing the inheritance of revisions
  • View the source tree, and the contents of files, from any past revision
  • See which files were changed, added or removed in any revision
  • Compare revisions of files, either visually with FileMerge, or as straight ‘diff’ output
  • Add or remove files from the local working tree
  • Commit (or revert) changed files
  • Update to a specific revision (past or present)
  • Push to or pull from remote repositories
  • Automatically detects filesystem changes made by other apps (or by the ‘hg’ tool) and updates the display immediately

23 Responses to “Murky: A Mercurial Client App”

  • evan (LJ) Says:

    This is rad. You should release a binary and call it 0.8 or something, just to provoke interest.

  • Jens Alfke Says:

    I will, pretty soon, but I literally wasn’t sure if it would run on anyone else’s computer, so I thought I’d let some motivated people test it a bit.

    BTW, thanks for suggesting Mercurial in the first place. It was one of your evan_tech posts a few years ago that induced me to go try it out. (And I think it was an even earlier post that got me interested in DVCS at all.)

  • Alexander Solovyov Says:

    It’s cool! I’d like to have possibility to see diff in-place (without running external software), but anyway it’s very nice. Thanks for work! :-)

  • Brandon Sneed Says:

    it ran fine here. just getting into using it more thoroughly. its working with my current hg projects already though.

    what’s the best way to contribute? patches, or straight to bitbucket?

  • Jens Alfke Says:

    Brandon — Cool! Bitbucket is probably the easiest, since they notify me of forks and of pull requests; but you could host your own cloned Hg repository anywhere online and email me the URL when you have patches. Or you could just send patches directly.

    (I like Bitbucket a lot, so far. It’s pretty fast, has a nice UI, and if you give them your public SSH key, you can push to your repos with SSH without needing a password.)

  • Ölbaum Says:

    That’s great, and a funny coincidence that I read your mailing list posts (dating of 2007) about it just on Tuesday :-)

    I’d love to contribute, but I’ve only ever used Mercurial for my own use so I’m not sure how to proceed. Does anyone have some advice?

    What I could think of is I clone the repo, host it somewhere, make a branch to experiment and merge changes to the trunk when they’re ready. Does it sound right?

  • Yun Zheng Hu Says:

    I usually use the command line tools to perform commits, but definitely going to try this out.

    I also like the name of the application ;-)

  • Benjamin Bock Says:

    Great news! I instantly had to try it out! I had to change the hardcoded path because my hg is located in /opt/local/bin and then… it works. Will post a bug report about that.

  • Martin Häcker Says:

    Hey, what a great start!

    Finally we have something to stand against gitx. :)

  • Chris Says:

    I tried to check out and build Murky:

    changeset: 54:6dbaffc46001
    tag: tip
    user: Jens Alfke
    date: Thu May 28 21:23:27 2009 -0700
    summary: Added tag 0.5 for changeset 05676813e618

    However, I get these errors from XCode (3.0, 10.5.7):

    Line Location Murky_Prefix.pch:9: error: Logging.h: No such file or directory
    Line Location Murky_Prefix.pch:10: error: Test.h: No such file or directory
    Line Location Murky_Prefix.pch:11: error: CollectionUtils.h: No such file or directory
    Line Location Murky_Prefix.pch:12: error: MYErrorUtils.h: No such file or directory
    Line Location MYUtilities_Debug.xcconfig:0: Command /Developer/Library/PrivateFrameworks/DevToolsCore.framework/Resources/pbxcp failed with exit code 1
    Line Location MYUtilities_Release.xcconfig:0: Command /Developer/Library/PrivateFrameworks/DevToolsCore.framework/Resources/pbxcp failed with exit code 1

    Any tips on clearing this up?

  • Chris Says:

    Oh, balls. Sorry, missed the setup instructions. PEBKAC, of course.

    Thanks!

  • Wayne Contello Says:

    I have downloaded the code. Before I start the mods I am considering I wanted to see if anyone has already started or knows whether this feature is possible…
    I would like to be able to select any two check ins and the diff between them. This is especially useful when look for where a problem crept in.

  • Jens Alfke Says:

    Wayne — You should post that to the mailing list at http://groups.google.com/group/murky-app

  • yorg Says:

    how do you use base mercurial on osx anyway? the standard package just makes python crap itself, both stock install and post MacPython install.

    does murky include hg (or a library) or does it need the it installed first?

    • jens Says:

      yorg — Not sure what you mean; I’ve never had trouble installing Mercurial on OS X, using the standard binary installer at http://mercurial.berkwood.com/ (which is linked to from the Mercurial home page.)

      Alternatively you can download the source and let the setup script install it; but the binary installer is easier.

      Murky does not come with a bundled copy of Mercurial, since then I’d have to keep it up to date with the official releases.

  • Martin Burheim Tingstad Says:

    Hey there!

    Great app, but it takes ages to load on large projects (>25000 revisions)

    Could you add a preference to only show the last [50|100|250|500] revisions etc? Or only this year or from a specified revision number?

    Thanks again :)

  • Greg Says:

    I really like Murky but I am have not figured out how to push using it to bitbucket.

    Is there a way to push using Murky to bitbucket (https)without dropping into the terminal?

    I get an error on Murky:
    “hg command error:
    abort: http authorization required”

    Is there a way for me to provide my bitbucket password in the push statement or to Murky?

    Thanks

    Greg

    • jens Says:

      Greg: Look up bitbucket’s instructions for setting up SSH access. Once you’ve registered your SSH public key with them, you can use “ssh:” URLs to push/pull. This works fine with Murky as it doesn’t require any user input. It’s also faster and more secure.

  • Greg Says:

    Works great, thanks for the tip.

  • art.mania Says:

    is it only me here the fool can not work it out :( I’m trying to figure out this mercurial and murky during last 3 weeks, but I could not understand anything about how to make it work for my local projects :( there is no clear tuts at all for starters, all are so comlicated :( I wasted my days, weeks!!

    I have to make this SourceControl work, but I’m tired of complicated guides :(

    • jens Says:

      art.mania: Murky isn’t a replacement for learning how Mercurial itself works. There are several tutorials on the Mercurial site — have you read “Mercurial By Example” or the first chapters of “Mercurial: The Definitive Guide”?

    • art.mania Says:

      i could make mercurial work, but still having trouble to find any starter tuts for murky. at least a simple post for how to use murky for a project, would be so great! how to start a sample project…

Leave a Reply