Subject: Re: bug#40967: 27.0.50; vc-diff in indirect buffers

From: Richard Copley <[email-masked]>
Date: Thu, 15 Oct 2020 09:08:45 +0100

In 'vc-revision-other-window', the 'switch-to-buffer-other-window'
call is now wrapped in a 'with-current-buffer', and therefore
'vc-revision-other-window' no longer has the effect of switching
buffer.

This is unfortunate. See 'ediff-vc-internal':

    (vc-revision-other-window rev1)
    (setq rev1buf (current-buffer)
          file1 (buffer-file-name)))

At this point, 'file1' is intended to be the name of the versioned
backup file checked out by 'vc-revision-other-window'. With your
change, instead 'file1' is the name of the base file.

      [...]
      (push (lambda ()
          (ediff-delete-version-file file1)
          [...])
        startup-hooks))

The startup-hooks function deletes the base file containing the local
changes that the user wanted to examine, instead of the temporary
backup file.

Recipe, from emacs -Q:

* visit a file under vc that has local changes
* M-x ediff-revision RET RET RET RET

By the time the Ediff control panel appears, the file has been deleted.

That behaviour is, emphatically, NOT desirable. I'd even go as far as
to suggest it should be fixed as a matter of urgency, or reverted for
now. Just my opinion, of course.