Revision graphs can become complex. TortoiseHg does a decent job of visualizing this, for example:

example Hg revision graph

However, this is a bit too much detail to conceptually grasp how the various named branches do or do not share code. What I'm looking for is a way to visualize similar graphs, but then with these requirements:


  • Be similar to TortoiseHg's default visualization: use visual cues (e.g. coloring) to distinguish branches, and a visual cue to see the order of commits (e.g. newest commits at the top), and show revision numbers for nodes;
  • For commits between two relevant1 split/merge commits: either condense them into one node or annotate the corresponding edge (preferred), or just hide them.
  • Show more prominently which named branch a set of nodes/edges belongs to.
  • Be able to select a range (period or commits).
  • Give instant insight into the flow of code through branches: e.g. 1000 commits (of which 40 are splits/merges between named branches) in 8 different named branches should fit on one screen.
  • Gratis.

1 Only splits/merges between named branches are relevant; splits/merges within one branch are by default not interesting to me, I care about the flow of code between named branches. An option to see the second type as well is a "Nice to have", see below.

Nice to have:

  • Option to indicate splits/merges within one named branch are also important. (See 1, above.)
  • See author of commits.
  • Tooltip with summary of a "condensed" node/edge (see requirement above).

Is there any piece of gratis software that fits my needs? Can TortoiseHg perhaps even do it? Or should I switch to another Hg GUI that has this?


With a little playing about TortoiseHg can do more or less what you are asking for by using the revset filter on the filter bar.

First ensure that the filter bar is visible by selecting in the view menu or pressing ctrl-S then in the revset filter try entering:

children(branchpoint() or merge()) or parents(branchpoint() or merge())

This should select a view of all the children and parents of those changesets that are either branch or merge points. I am sure that with a little more playing with changesets you can get more or less exactly what you need.

Sorry about the fuzzing but must respect confidentiality: Fuzzed Example

| improve this answer | |
  • 1
    Yes. Exactly this! Thank you :-) – Jeroen Dec 22 '14 at 14:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.