RSS feed
<< Yes, cross-platform Single Sign-On for Java Webapps is possible. | Home | Slf4j on Glassfish: When smart ideas collide >>

Exploring the Glassfish commit history with SVNSearch

I recently added the Glassfish Subversion repository to Paul Sterk, the community manager for Glassfish, asked if I could provide some background on and the benefits of having Glassfish indexed there. So, here are some ways to use SVNSearch:

Who changed what, when?

SVNSearch helps you keep track of, understand and learn from changes in version control systems. The basic interface shows you the most recent commits. Here's a screenshot from the Glassfish project:

But SVNSearch can do better than that. You can limit your search by log message, path, file name, file type, date, author or a referenced issue number. The following screenshot shows all commits done by kohsuke last year in the /gfsvn directory having the word "fixed" in the log message:

You might have noticed the charts on the left side of the screen. These statistics show commit distribution by path, time and  author and they are generated for each search you make.

What changes were made to file X in revision Y?

Once you've find the commit you're looking for you might be interested in see what changes were actually made in the files affected by the commit. By clicking on the a path SVNSearch shows you a side-by-side colored diff of the change, including inline changes:

Which developers work on the same part of the project?

For each file in the repository, SVNSearch knows who made any change to that file. It also knows who else have touched that file and uses this information to provide a reasonably sophisticated collaboration graph. This graph will have one node for each developer in the project and there will be an edge between any two developers that have worked on the same code. Developers tend to be placed near closely if they've worked on lots of common files.

Developers who have committed recently are red while people who haven't committed in a while gets a more blue color. The Glassfish shows a group of developers in the upper left part of the graph, so let's zoom in on them and show their names:

The collaboration graph can be also useful for identifying parts of the code base that have been abandoned or for learning about the knowledge flow in the project. Sometimes two groups of developers are connected by a single developer, that means this developer is probably important for the flow of knowledge in the project since he's the only one who's worked on both parts of the code base.

When do people commit?

Say you want to get an overview of who is or has been involved in a project. You don't care about the details what actually changed so a detailed change list doesn't actually help you. For these cases, SVNSearch provides a timeline plot of all changes in the project, grouped by author.

Every red dot in this plot is a commit. The X axis is the timeline of the project and the Y axis actually show time of day of the commit. The list of authors can be ordered by name, first commit, last commit, total lifespan or number of commits which is the ordering used in the above example from Glassfish.

Developer turnover

Long lived software projects always experience a certain degree of developer turnover. People leave the project and new developers join. SVNSearch includes a developer turnover chart that is based on the work of Gregorio Robles and Jesus M. Gonzalez-Barahona of Universidad Rey Juan Carlos, Spain.

The idea is to track the 20% most active active developers in each one of ten intervals of the total timeline of the project and then track how active these developers are in the rest of the time intervals of the project.

While the theory is interesting, you don't really have to understand it all to make use of it. A rule of thumb is that many horizontal lines indicates a stable core group, while diagonal lines signals that the core group is being replaced.

The Glassfish project has a quite stable core group according to SVNSearch:

"Let me know when it's committed"

Dependencies is something we have a lot of, not only in our software but also in software development. Have you ever had to wait for someone else to make a change in "their" code before you can continue with "your" coding?

Any search in SVNSearch has an RSS feed, so if you're waiting for a specific change, why not just search for that and then subscribe to the feed? Here's an example show recent changes in Glasshfish using the RSS Screen Saver in OS X:

Background and future of the SVNSearch project

I started working on SVNSearch about four years back. The company I worked for at the time used CVS and suggested we started using Subversion instead. There tool support for Subversion wasn't all that good at the time but I was able to find alternatives for most of our tool chain. The CVS tool that I couldn't find a replacement for was the query interface in ViewCVS. So that's how I started working on SVNSearch.

Over the years I've added the features you've seen here and more,  but I've spent most of the time making sure SVNSearch is really, really fast and making it scale to millions of revisions. today indexes over 3.3 million revisions with the largest repository being KDE with over 840.000 commits alone. is a free service I provide to the open source community. My plan is to offer SVNSearch as a product on a commercial basis and I have a few customers in a private beta round now. I can't promise any public release date yet, but if you're interested in joining the beta, let me know.

I've recently added enterprise features such as LDAP integration, Kerberos / Active Directory Single Sign-On, and role based security. But those features are more interesting when using SVNSearch inside a company firewall and probably not that interesting for an open source project like Glassfish :-)

Oh, just one more thing: I always enjoy feedback!

Whether you like SVNSearch or not, I'd love to hear your thoughts. Perhaps you've found a bug, have an idea for a new feature or just want to let me know you're using it. In any case don't hesitate to use the feedback form on or just send me an email. (feedback at svnsearch dot com)

Re: Exploring the Glassfish commit history with SVNSearch

The amount of projects and data is pretty impressive, and extraordinary fast compared to any existing reporting tool!
Also the collaboration tab is a nice illustration of the applet comeback :-)

Quick question: you display average working hours for developers along the day, is it GMT or local time?


Re: Exploring the Glassfish commit history with SVNSearch


I've put very much effort into making SVNSearch deliver results as fast as possible. A lot of this effort involves server side code, but I've also tried to optimize the front end performance so that SVNSearch is super fast in the browser. I think performance matter more to the user experience than what is typically recognized.

As to the time of day chart, the time of day is actually in the server's time zone, which is CET (UTC+2).

That makes sense when running SVNSearch inside the firewall of a company, but is used by people all over the world so I think we should change that. Either by sticking to UTC or letting the user decicde some way.

I'm running a private beta of SVNSearch currently so if you're interested trying out SVNSearch in your company, just let me know. The easiest would be to send an email to eirik at


Add a comment Send a TrackBack