I mentioned this briefly in my last post, but here's a real announcement. :-)
"Long have we toiled on our tools that interact with CVS. Oh, wait, you mean we're switching to Subversion? Oh...long have we toiled on...what, we're switching to Git?" -The Oppressed Development Tools Maintainer
So, I wanted to write a simple tool that displayed some information about version-control systems (or "software change management" systems, as some are called). I went looking through CPAN, thinking, "Surely, there must be a single module that can interact with many different VCSes, right?"
But surprisingly, there wasn't. There was the VCS module, and I spoke with its maintainer and he said that he'd always wanted to re-write it in an object-oriented fashion, but had never found the time to do so.
So, I wrote VCI, the generic Version Control Interface. Currently it can display the history and contents of CVS, Subversion, Bazaar, Mercurial, and Git. It's easy to write new drivers for other VCSes, you just make a new package in the VCI::VCS namespace. (And if you read the VCI code and documentation, you'll see it's easy to write a driver.)
VCI is object-oriented. It uses Moose.
VCI aims to provide a broad set of features while still working well with all the different VCSes commonly in use. The rationale, structure, and functionality of VCI is described in the documentation of the VCI module.
You can find VCI on the CPAN. VCI also has a (currently minimal) homepage.
The code is currently alpha-quality. Stability and performance improvements are coming in the future.
I'm very interested in knowing who's using VCI, and am very willing to have contributions and new drivers from any programmer who feels competent enough to design quality code.
You can direct any questions, comments, or patches to me at mkanat[at]cpan[dot]org.
I hope that you find VCI useful!