monotone - dot

simple representation

For monotone there are a few tools that can generate dot graphs out of the monotone database, most notable montone-viz. The normal way of displaying the revision graph is somewhat similar to the following picture

In this picture the colouring depends on the branch. The current revision is the box with the multi line border. For the box shaped revisions all the connections are also shown in this picture. The hexagonal revisions can be connected to revisions outside this picture. Finally, a revision with a single border is a HEAD.

reduced representation

Now this is very nice. But if you want to see more revisions the picture can become enormous. A way of reducing the number of revisions displayed but keep the essential properties of the revision graph, is to remove all nodes that have only one successor and one predecessor.

In that case the picture becomes

In this picture a red line between two revisions indicate that some revisions are left out, but there is a chain from the source revision to the target revision.

branches

If you see multiple heads in a single branch more as an artifact of the distributed nature of monotone, but are more interested in how branches interact. So for the following diagram the only nodes displayed are nodes for that:

annotate

Of course you can also generate a graph based on the revisions in which a particular file is changed. In the following diagram that is done for the file commands.cc.

Discussion

Edge reduction?

The reductions help, but the number of edges is going to explode. For example if you look at the branches picture there is an edge from 1a98 to 909a. This edge is there because there is a development path that does not go through dc88a nor c9509. It might be very nice to know that this happened. But if you keep on adding revisions to this picture it will become more like the annotate picture. In the annotate picture the number of edges makes the diagram almost unreadable.

Annotate

The annotate diagram is too confusing. But I don't know how to make it clearer.

Dot files