Subject: bug#62674: vc-next-action prints error message: "Cannot open load file: No such file or directory, vc-nil

From: Dmitry Gutov <[email-masked]>
Date: Tue, 11 Apr 2023 04:53:49 +0300

Hi!

On 05/04/2023 01:12, Beth Lake wrote:
> Create a CVS repository in the present working directory:
> $ cvs -d "$PWD/cvsroot" init
> 
> Create multiple working directories:
> $ cvs -d "$PWD/cvsroot" checkout -d dir1 .
> $ cvs -d "$PWD/cvsroot" checkout -d dir2 .
> 
> Create a file in one of the working directories:
> $ touch dir1/file
> 
> Check in the file:
> C-x v d dir1 RET
> SPC m C-x v v C-x v v C-c C-c q
> 
> Mark the file in the other working directory:
> C-x v d dir2 RET
> SPC m
> 
> vc-next-action prints an error message:
> C-x v v yes RET
> 
> Cannot open load file: No such file or directory, vc-nil

The patch below seems to fix this particular scenario.

I'm not sure we want to expend much effort on supporting CVS this day 
and age, but if the one-liner change is enough, all the better.

You'd have to upgrade to a newer Emacs, though. 26.3 is quite old.

diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 90905edb887..6ec70b566f9 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1594,7 +1594,7 @@ vc-checkout
         (vc-call make-version-backups-p file)
         (vc-up-to-date-p file)
         (vc-make-version-backup file))
-  (let ((backend (vc-backend file)))
+  (let ((backend (or vc-dir-backend (vc-backend file))))
      (with-vc-properties (list file)
        (condition-case err
            (vc-call-backend backend 'checkout file rev)