Subject: bug#79126: vc-switch-working-tree does not work if there is no matching file

From: Dmitry Gutov <[email-masked]>
Date: Wed, 30 Jul 2025 05:36:54 +0300

X-Debbugs-CC: [email-masked], [email-masked]

Hi!

If the current buffer does not visit a file (such as Dired, mentioned in 
a FIXME comment), or if the current file has no corresponding on the 
other worktree, we end up with an error.

Like

   file-relative-name: Wrong type argument: stringp, nil

or

   File ‘lisp/progmodes/abc.el’ not found in ‘~/vc/emacs-28/’

I guess some of these could be improved in project-find-matching-file 
(support for more major modes?) but semantically it seems like 
vc-switch-working-tree should try harder. Falling back to visiting the 
worktree root in Dired, if it doesn't find a better choice.