CVS, BugZilla, AntHill, and Clover
This isn't a blog about Java-based technologies per se, but it's relevant to any Java programmers working on Open Source platforms. Recently, I have spent a few days working on migrating our existing CVS repository onto some new hardware. This time, I also set up ViewCVS and BugZilla, and took some steps to integrate them more tightly. I worked from a great overview by Steve McIntyre, which is located here.. Integrating CVS and BugZilla is a bit of a tedious process (currently, it involves patching and recompiling CVS, patching BugZIlla, setting up a user for BugZilla mail, etc.), but the results are worth it. I believe some patches are in the works for BugZilla to make this process easier, but for now, it takes a bit of time.
Once you have gone through the process, you can insert bug references into CVS commits. The corresponding bug report is updated with the details of the CVS commit, and bug update notifications are mailed out to the interested parties. What's neat is that a link is included to the modified file(s) in CVS , and also a link to a ViewCVS diff - very useful. A sample bug update is shown below.
A nightly cron job keeps the CVS modules file updated with the current contents of the repository.
The next step was to install a continuous integration / build manager. There are a couple of Open Source choices - I went for AntHill OS, as it is quick and easy to get set up. Using a continuous build manager is a good step - as well as build reports, you can generate docs, unit test reports,and code coverage reports. It allows you to monitor a project as a whole as it is being developed. Having a centralised build location allows you to to automatically notify an entire team about a build failure.
Code Coverage setup was the next step. I weighed up a few options, and went with Clover, which generates excellent reports, and is very configurable. Clover isn't free, but at the end of the 30 day eval, I'm going to buy it - it's definitely worth it. Just add it into your build files, and you're away. Which brings us to the next step.
It's not widely known how configurable ViewCVS is. It is entirely template-based (like BugZilla), so you can modify it as much as you want. I previously used the templates to add some project size information. This time, I wanted to be able to view the coverage reports for an entire project easily, so I made a couple of modifications to the ViewCVS templates, and now for all top-level projects, ViewCVS generates a link to their Clover reports. Clicking on the top-level Clover link will open the corresponding reports.This looks like:
These could be linked up even further - for instance, when a new project is created in CVS, a new product could be added to BugZilla, and you could add a further link on the ViewCVS top-level page to find all the open bugs for that project instantly - or maybe something along the lines of a JIRA-style roadmap (example) - a very cool feature.
There are a lot more features that could be added, but this is a good start. Spending a bit of time at the outset can help you work more productively in a team environment.