Graphing revision trees...

One of the things I miss most about CVS is knowing the full history of a file. By that, I mean being able to use cvsgraph to map out where a file has been. The releases, the branches, the tags, everything. From a configuration management perspective, this feature was awesome. You could easily identify where a particular problem existed, and which versions were affected pretty easily. With Subversion, that’s a little more complicated to do. Subversion doesn’t have branch and tag names as first class citizens. So the only way to really keep track of the revision tree is to generate your own database of that information, and walk the node graph. It’s painful.

However, I decided to take matters into my own hands. I really want to see that information, so I’ve been working on a python script to construct a revision tree for a particular file in the repository. It’s largely inefficient at the moment (I’m just trying to get something that’s correct before something that’s fast). But the hope is that once I’ve got it down, I can update the database on commits, and not have to fully index the repository again. I’m also hoping to turn this into a trac component/macro that can display the revision graph right on the browse screen.

Of course, I still need to track down a charting/graphing library… or I may just have to borrow the logic from cvsgraph and do it directly using gd. So much to do, so little time.