Subject: 28.1: `vc-dir' (key sequence: C-x v d) fails when used with a CVS repository
From: Mark Harig <[email-masked]>
To: "[email-masked]" <[email-masked]>
Date: Fri, 14 Oct 2022 17:36:38 +0000 (UTC)
List-Id: <debbugs-submit.debbugs.gnu.org>

When attempting to retrieve a VC status for a directory or file
when the VC backend is CVS, the `vc-dir' command fails with an
error message.

Steps to recreate the problem, using `emacs -Q':

# 1. Create a new CVS repository from a bash shell prompt:
$ cd   # Start in home directory.
$ mkdir tmp1
$ cvs -d ~/tmp1 init  # Create a new CVS repository in ~/tmp1.
$ CVSROOT=~/tmp1; export CVSROOT

# 2. Create a new project to add to the CVS repository:
$ mkdir tmp2
$ mkdir tmp2/project1
$ cd tmp2/project1
$ touch foo.txt README.txt  # Create some empty files.
$ cd ..  # Return to tmp2 directory.

# 3. Add project as a module named "project1" to the CVS repository:
$ cvs import -m "Initial versions." . project1 start
N ./foo.txt
N ./README.txt

No conflicts created by this import

# 4. Retrieve the CVS module "project1":
$ cd ..  # Return to home directory.
$ ls tmp1 tmp2  # Check directories' contents.
tmp1:
CVSROOT/  project1/

tmp2:
project1/

# 5. Retrieve the new module from the CVS repository:
$ mkdir tmp3
$ cd tmp3
$ cvs checkout project1 project1
U project1/README.txt
U project1/foo.txt

$ ls
project1/
$ ls project1
CVS/  foo.txt  README.txt

# 6. Start emacs in directory ~/tmp3/project1:
$ cd project1
$ emacs -Q

7. In Emacs, type `C-x d' (the function `dired') to list the
   contents of the initial directory, ~/tmp3/project1.  This list
   will include the subdirectory `CVS' and the two files
   `foo.txt' and `README.txt'.

8. Type `C-x v d' (the function `vc-dir') to list the VC status
   for the files in the directory.  The following error message
   will be written to the *Messages* buffer:

   vc-responsible-backend: Wrong type argument: sequencep, t
   Mark set

9. Type `C-u C-x v d' (that is, add a prefix argument to `C-x v
   d').  The following prompt will be displayed:

   VC status for directory: ~/tmp3/project1

At the prompt, accept the command by pressing the <RET> key.  The
second prompt will then be displayed:

   Use VC backend:

At this prompt, type `CVS' and press <RET> (Note that the capital
letters C V S are required).  The command completes successfully
and a *vc-dir* buffer is displayed with the VC backend correctly
identified as CVS.

So, the code for `vc-dir' (or, key sequence C-x v d) contains an
error in which it cannot correctly identify the VC backend if it
is not provided, when the VC backend is CVS.

(End of report.)