> Hello all,
> 

> Win2K>  cvs -t -d :server:user@linuxbox:/home/user/repository checkout .
> 
> cvs checkout: notice: main loop with
> CVSROOT=:server:user@linuxbox:/home/user/repository
> S-> so_module (., Updating, , )
> cvs checkout: cannot open CVS/Entries for reading: No such file or
> directory
> cvs [checkout aborted]: no repository
> 
This is a bug in the filename routines on the Win32 version of CVS. The 
attached patch fixed this problem for me on 1.10.5. It needs to be 
applied in the windows-NT directory.

Unless there are massive changes it will probably apply cleanly to the
1.11 sources. I could probably build a 1.11 CVS client with this patch
if you don't have the capability to build CVS from source.

Mike

Index: filesubr.c
===================================================================
RCS file: /projects/mpc_data/grandmet/cvs_src/windows-NT/filesubr.c,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.2.2.1
diff -c -r1.1.1.2 -r1.1.1.2.2.1
*** filesubr.c	1999/09/02 16:26:25	1.1.1.2
--- filesubr.c	1999/09/23 07:29:07	1.1.1.2.2.1
***************
*** 783,796 ****
  	char *last_forw_slash, *last_back_slash, *end_of_dirname;
  	int dirname_length = 0;
  
! 	/* FIXME: If argv[i] is ".", this code will expand it to the
! 	   name of the current directory in its parent directory which
! 	   will cause start_recursion to do all manner of strange things
! 	   with it (culminating in an error).  This breaks "cvs co .".
! 	   As nearly as I can guess, this bug has existed since
! 	   expand_wild was first created.  At least, it is in CVS 1.9 (I
! 	   just tried it).  */
! 
  	/* FindFirstFile doesn't return pathnames, so we have to do
  	   this ourselves.  Luckily, it's no big deal, since globbing
  	   characters under Win32s can only occur in the last segment
--- 783,799 ----
  	char *last_forw_slash, *last_back_slash, *end_of_dirname;
  	int dirname_length = 0;
  
! 	/* If argv[i] is ".", we don't want to expand it since it is
! 	 * already a fully expanded reference to the current directory . */
! 	if (strcmp(argv[i],".") == 0) {
! 	    new_argv[new_argc++] = xstrdup (argv[i]);
! 	    if (new_argc == max_new_argc)
! 	    {
! 		max_new_argc *= 2;
! 		new_argv = xrealloc (new_argv, max_new_argc * sizeof (char *));
! 	    }
! 	    break; /* done for this pass */
! 	}
  	/* FindFirstFile doesn't return pathnames, so we have to do
  	   this ourselves.  Luckily, it's no big deal, since globbing
  	   characters under Win32s can only occur in the last segment

Reply via email to