Subject: Re: bug#41974: 28.0.50; Some vc commands refuse to work when called on non-file buffer

From: Juri Linkov <[email-masked]>
Date: Tue, 23 Jun 2020 02:38:39 +0300

> How about this:
>
> diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
> index 9b12d44978..6bb72d8976 100644
> --- a/lisp/vc/vc.el
> +++ b/lisp/vc/vc.el
> @@ -1074,11 +1074,11 @@ vc-deduce-fileset
>        (progn                  ;FIXME: Why not
>        `with-current-buffer'? --Stef.
>  	(set-buffer vc-parent-buffer)
>  	(vc-deduce-fileset not-state-changing allow-unregistered
>  	state-model-only-files)))
> -     ((and (derived-mode-p 'log-view-mode)
> +     ((and (not buffer-file-name)
>  	   (setq backend (vc-responsible-backend default-directory)))
>        (list backend nil))

Thanks for finding the right place to fix, and it should also fix all
other vc commands that failed on non-file buffers.

>       ((not buffer-file-name)
> -       (error "Buffer %s is not associated with a file" (buffer-name)))
> +       (error "Buffer %s is not recognized by any VC backend"

It seems this code is not necessary anymore because before this code
gets executed, vc-responsible-backend already signals its error
"No VC backend is responsible for file".