Eirik Bjørsnøs is the creator of SVNSearch, a tool to analyse your source repository (it supports SVN, CVS, Perforce and Git) and display its content using different views.
I have known about SVNSearch for several years now and I've always found this tool one of the best of its kind (I think it's ahead of the competition especially in the domains of speed, scalability and easiness or use). However I don't think the tool has received the publicity it deserves so I'll add my stone to help promote it.
So let's review some of its features by looking at the SVNSearch XWiki repository.
Amazingly Fast
The search are real fast and SNSearch supports real time updates: Go to your repository page on SVNSearch and make a commit. You'll see it appear in almost real time without doing any refresh (thanks to Cometd)
Dashboard View
You get a Dashboard-like view of any part of your repository (you get the same view with the graphs even down to the file level) with commits and graphs. Note that there's even a JIRA integration since the commits mentioning JIRA are hyperlinked automatically.
- Main Dashoard view (truncated) showing that 3 persons have worked on this Macro.java file
\
- File-level Dashboard view (truncated)
Powerful Search
You get a really powerful search form with Ajax-style autocomplete on path, filename, author and JIRA issues.
- "Did you mean" suggestions when searching on log content. This is based on actual content, not a dictionary, so for example searching for "explicitly" can suggest "explicitely" even though "explicitly" is correct
\
- Autocompletion on repository path
\
- Autocompletion on file. Note the CamelCase autocomplete: "SMI" offers "SpaceManagerImpl.java"
\
- Autocompletion on Authors
\
- Autocompletion on file types
\
- Autocompletion on JIRA issues
Activity Graphs
Useful to know the health of your project and how it progresses.
- Activity by Path (you can drill down by clicking in it)
\
- Activity over time (you can drill down by clicking in it)
\
- Activity by year (you can drill down by clicking in it)
\
- Activity by author (you can drill down by clicking in it)
\
- Committers over time
\
- Activity by day
\
- Activity by hour
\
- Committers Turnover
The last Committers Turnover graph needs to be viewed dynamically to better understand it. Since it's a bit complex here's how Eirik explains it:
It's an visualisation of the composition of the development team over time. The algorithm goes like this: * Partition the timeline (first commit to last commit date) into 10 equally large partitions. * For each partition, identify the 20 percent most active committers * For each partition, create a graph showing how the relative activity of that group's changes over time
So what I end up with is a set of ten line graphs, each showing the relative amount of commits done by the group of most active commiters from each partition.
To be honest it's difficult even to explain it, so I can understand that people don't understand it intuitively
An way to look at it is to say that horizontal lines indicate a stable core group, while diagonal lines means that the core group is changing. So it can be used as an indicator of project health.
If you mouse-over the chart you should be able to see the actual contribution by each developer in each 20% group.
It's all based on a paper called "Contributor Turnover in Libre Software Projects", by Gregorio Robles and Jesus M. Gonzalez-Barahona.
Timeline View
This is a very useful graph for viewing each committer activity over time.
Collaboration View
Displays committers relationship (i.e. files they've worked together on) using a dynamic graph (you can zoom in/out, move nodes). Redish colors means recent activity while Bluish colors means old activity.
Diffs
SVNSearch can show commit list for a given file and also the diffs for each commit.
Other Features
- RSS feed for any search. This means you can follow development in a subproject or branch using any RSS reader.
- The from and to fields can actually contain revision ranges as well as date ranges.
- Author plots are sortable by name, first commit, last commit and number of commits.
- You can select multiple authors for comparison by separating them with a space or a comma.
Last I heard Eirik was running a private beta and wanted to sell this tool at some point in the future while keeping a free version on svnsearch.org for open source projects.