source control infrastructure growth

Using a script from Bryan O'Sullivans bitkeeper repository we integrated the bitkeeper repositories for Xaraya with our bugzilla installation. The script is used as a trigger everytime changes are committed to the main repositories on the server and scans the changeset comments for text fragments mentioning bugs.

When it finds those fragments, the following happens:

  • the change committed is attached as a patch to the bug; (this patch can in most cases be applied to source trees out there, while maintaining upgradeability)
  • a comment is entered for the bug, summarizing what happened;
  • links are created in the comment to view the path in the bitkeeper web interface;
  • bugzilla mails the relevant parties as usual.

This script is smart enough, not to enter the same information on the same bug and changeset twice which, if you know how bitkeeper works, is not uncommon if you have multiple repositories. As always, on deploying something new, you always start to think immediately about features which you could add (example: scanning for fixed or fix and setting the state of the bug accordingly).

During the period of little over a year, we've built ourselves an infrastructure which is still growing and is literally improved upon everyday. Some elements of it:

  • automatic updates of mirror repositories;
  • fully integrated patch system;
  • custom command system, defining new commands in the repository which propagate to all developer repositories;
  • funny stats output;
  • getting information on RFC status;
  • integrated build system based on phing
  • integrated source documentation generator based on phpdoc;
  • repository web interface as module of xaraya;
  • adding comments to files which propagate across repositories;
  • integrated unit test system;
  • semi-automatic archiving of old files in the repositories;
  • possibility to test for compliance with coding standards on every commit automatically;

With hindsight, a rather long list of tools, mainly created for fun. Some are used extensively, others are only used by myself.