Page History

Turn Off History

SCM Trac

Ticket #278 outlines an attempt to modify CVSTrac sufficiently that it can be easily targetted at SCMs other than just CVS. Subversion is the first recipient of this attention. See SvnTrac for Subversion specifics.

The basic approach is to abstract the places where we talk directly with the CVS repository behind a set of function calls and then write a Subversion-specific implementation. 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. Most SCM's with some concept of 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, both CVS and Subversion are 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; that's not the goal.

That's really about all. The average end-user shouldn't even notice the difference.

more to come