It is very easy to miss the fact that Perforce has a couple of very useful branch history viewing utilities.
These are both available via the Perforce Public Depot and were contributed by individuals. In both cases they show the history of a file and how it has been branched (all ancestors etc).
It is very likely that Perforce will produce an official version of such a product, but in the meantime use one of these.
P4QTree
By Sam Stafford (who works for Perforce, but this was done in his own time and is not an official product).
It is written using QT (the cross platform GUI toolkit), so could run on other platforms. Note that the Source is also available.
Installation
From the following link in the Public Depot (you can just sync it down using a normal Perforce client if you want but I find this easier)
ftp://public.perforce.com/guest/sam_stafford/p4qtree/bin.ntx86/
Download the two files: qt-mt306.dll and p4qtree.exe and put them in the same directory in which you installed P4Win (the Perforce Windows GUI).
If you do this and stop and restart P4Win, you will notice that the right click menu within P4Win in the Depot pane now has an extra option called “Revision Timeline..”. This makes it very easy to get a quick picture.
Example of P4QTree dialog. Note that clicking and dragging from one version to another shows diffs between versions. Double-clicking a version gives you p4win history. The meaning of colours etc is shown by Help>Legend.
BranchView
This is written in Java by Andrei Loskutov.
Installation
Follow instructions at: http://public.perforce.com/guest/andrei_loskutov/readme.txt
Note that it has to be added to the p4win Tools menu and run from that menu.
Graphical branch view
BranchView example. If you right-click on trees you can reposition them. Also, if you right click in the canvas you can save to HTML + Images as well as other options.
Which One?
I use both myself. Most of the time I use P4QTree because it is faster (uses the Perforce C++ API rather than spawning p4 command processes to get the info). However, it does have the odd bug such as with long pathnames being truncated, in which case I might use BranchView, and the ability to reorganise pictures can be very useful.



