Emacs 22.2 and version control
Mar. 29th, 2008 12:03 pmGNU Emacs 22.2 has added support for bzr (and others) to its version control module. Being able to get diffs, logs and annotations for the current file in the editor rather than using a separate shell is quite a win, and is what I'm used to in contexts where I still use CVS, so I'm pleased with this up to a point.
But...
Committing using the usual VC key binding only commits the current file. That's just about acceptable for underlying tools like CVS where there's no concept of a changeset, but it's completely useless for any modern version control system.
I see from the help for C-x v v that:
If you call this from within a VC dired buffer, and one or more files are marked, it will accept a log message and then operate on each one. The log message will be used as a comment for any register or checkin operations, but ignored when doing checkouts. Attempted lock steals will raise an error.
So might this be the workaround? To get a VC dired buffer you type C-x v d. Unfortunately the actual effect of this is at least several minutes of apparently fruitless disk activity (even when only three or four files have changed). Obviously even if this does ever terminate (I got bored waiting) it's not something you're going to do every commit.
(Yes, I've read the manual and looked for any variables to configure, not that either of these would be particularly sensible default behaviour. No luck.)
RMS recently wrote that:
The GNU Project is not just a collection of software packages. Its intended result is a coherent operating system. It is particularly important therefore that GNU packages should work well with other GNU packages. For instance, we would like Emacs to work well with git or mercurial, but we especially want it to work well with Bzr.
Unfortunately it seems it's not really there yet l-(