I have released VCS 0.6.
Do you find yourself typing bzr commit in Git branches, or cvs diff in your Perforce workspace? Then perhaps VCS is for you.
VCS is a wrapper for version control systems. It presents an essentially uniform interface to the user, allowing ‘muscle memory’ to use vcs commands rather than adapt to the version control system currently in use. Of course, the downside is that you have yet another three-letter command to start using!
The supported systems are Bazaar, Git, CVS, Subversion, Mercurial, Darcs and Perforce. More could be added. The supported commands are add, annotate (blame), clone, commit, diff, edit, log, remove, revert, status, update. Again, more could be added.
Where Do I Get It?
What's New In VCS 0.6?( Various things )
Changes in VCS 0.5:
- New environment variables VCS_PAGER and VCS_DIFF_PAGER allow you to feed log and diff output through colorizers and into pagers automatically.
- Perforce support is now more self-consistent. In particular vcs diff and vcs commit now have a default of ..., applying them to just the current directory and its children rather than the whole workspace.
- vcs status now produces much more useful output for Perforce, and honors .vcsignore files.
Get source code and/or .deb files from http://www.greenend.org.uk/rjk/2009/vcs.
(Or, what I did on my day off.)
Over the last few years there've been a lot of new version control systems and where previously you could pretty much rely on most free (and many proprietary) projects using CVS, now they could use any of CVS, Subversion, Git, Bazaar, Mercurial, darcs, Arch or other less well-known (or less cheap) systems.
While the newer systems have many great features, and while there are advantages to diversity, one of the downsides is that your “muscle memory” is constantly betrayed by it. If you've got used to typing bzr add then it's easy to mistakenly keep to that even when using some project that still uses CVS (for instance).
My idea to address this is a new command called vcs which has a uniform command interface and figures out what version control system you're currently using and issues the appropriate native commands for it.
VCS is my implementation of this idea. Instead of remembering which of cvs add, svn add, bzr add or whatever you need to type, you can just enter vcs add and let the computer work out the right command for you.
Version 0.1 is very limited and best understood as a base for development rather than a finished product. It only knows about CVS, Subversion and Bazaar (which is plainly not enough), and it's missing some important commands such as update and status.
Update: I just put up version 0.2, which adds a few more commands.