SCM Trac

Starting in ticket #278, CVSTrac has been modified sufficiently that it can be targetted at SCMs other than just CVS. Subversion was the first recipient of this attention. See SvnTrac for Subversion specifics. GitTrac was the second attempt and has a little more (outdated) documentation on just how this can be accomplished.

In order to retarget CVSTrac to a different SCM, you need:

  1. the ability to (quickly) check for repository changes since a previous checkpoint
  2. a way to generate a "diff" between different revisions of a file
  3. access to the contents of any revision of a file

Additionally, it's nice if the SCM represents a group of related commits as an atomic action, although as with CVS it's sufficient if you can fake it convincingly.

Both CVS and Subversion fit all these requirements. While GIT is a distributed "SCM", GitTrac can be successfully pointed at a single instance without much difficulty and the way GIT repositories are published makes GitTrac feasible.

Most SCM's able to operate with a central repository should be able to manage, although performance may vary wildly. In some cases, item 1 could be faked via some kind of post-commit hook program.

To simplify maintenance, support for all SCMs is built into the same binary and the choice of which SCM gets used is just a matter of changing the name of the executable. However, this doesn't mean you'll be able to migrate a CVSTrac database from a CVS to a Subversion repository. In fact, while you could probably migrate the code, migrating things like check-in and ticket cross-references would be rather difficult.