Subject: bug#8927: 24.0.50; Flaw in C-x v u

From: Glenn Morris <[email-masked]>
Date: Fri, 24 Jun 2011 16:59:29 -0400

Richard Stallman wrote:

> I did C-x v = to see the changes in a file, then reverted the file
> with C-x v u so I could install and commit those changes one by one.
>
> Unfortunately, C-x v u deleted the *vc-diff* buffer and made this fail.
>
> C-x v u should not delete the *vc-diff* buffer.

On a related note, it has always annoyed me that vc-revert
unconditionally always shows me the diff of the file in question before
letting me revert. Basically every time I use vc-revert, I have already
checked the diff beforehand, so all this does is introduce an annoying
delay when the backend is slow to produce a diff. I'm not aware of a
command-line VCS that show you the diff when you run its revert command,
so I don't see why Emacs should do so.

Anyway, that's why it kills your *vc-diff* buffer - because it assumes
it has just created it. The fix for your problem would presumably be for
vc-revert to only kill the buffer if it did not exist beforehand.

But personally I still wish it would not always insist on showing me the
diff.