![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
I have released VCS 0.6.
What's VCS?
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?
http://www.greenend.org.uk/rjk/2009/vcs.html for source code, .deb files and Bazaar branches.
What's New In VCS 0.6?
General
Expat is now required to build vcs.
Detection of cURL is now improved, making it possible to build under OS X without using Fink.
If you quit a pager (configured with VCS_PAGER for instance) before some slow underyling command has finished executing, vcs should now exit immediately rather than waiting for the subprocess to complete.
Changes to Perforce support
Filenames containing @, %, # and * should now be properly encoded and decoded.
If you try to vcs add a directory to Perforce, it will be silently ignored.
vcs status now shows files opened for delete and supports “incomplete” client views (i.e. which don't cover every possible filename below the client root) properly.
vcs commit should now work for all four combinations of a message being present or not and a list of files being present or not (issue #2).
Changes to Bazaar support
vcs up will invoke bzr up in a bound branch (created with bzr checkout) and bzr pull in any other branch.
Changes to Subversion support
vcs revert now supports Subversion back to 1.3 (previously it would misparse output from 1.3 and 1.4). A possible hang was also removed.
Changes to Git support
Improved support for older versions of Git and fixed vcs status.
Changes to Darcs support
Tests now set $EMAIL to avoid a interaction (or a hang!)
Changes to Mercurial support
vcs clone now recognizes the static-http: scheme.
Improved support for older versions.
Changes to CVS support
Cope better with conflicts.
(no subject)
Date: 2009-07-12 08:12 pm (UTC)(no subject)
Date: 2009-07-12 09:34 pm (UTC)Hmm, is that a desirable failure mode?
(no subject)
Date: 2009-07-13 08:27 am (UTC)A reasonable question!
Firstly Perforce doesn't version directories so the options are ignore or report an error. (You might know this already, but for the benefit of anyone else reading...)
Secondly if you think that 'add DIR' means 'allow me to subsequently add DIR/FILE' (as in CVS) then making it a no-op makes more sense than making it report an error. (Consider scripted use for instance, where typically you stop if something didn't work.)
If instead you think that 'add DIR' should mean 'add all the contents of DIR' then you want either for it to do just that or to report an error saying it didn't. Personally I hate that meaning of 'add' though; you have to go through all the added files and un-add the ones you didn't want to track. Hence the behavior I chose.