Hi,

I have been playing around with the new version and noticed a bit of a
behaviour change that is causing me some grief and am wondering if this
is a real bug or an intended behaviour change.

To make a long story short (long version follows), Windows clients can
no longer distinguish between an active file and a deleted file
where the only difference in the filename is case. This is a change in
behaviour from CVS 1.11.5.

The long version; use a real operating system (or at least some Unix or
Linux variant) to create a test directory and some files:

  mkdir case
  cd case
  touch TESTFILE
  cvs -d .... import -mtesting sample VENDOR RELEASE

Now (still on a real OS), delete the test file and add a new one with
a different case:

  cvs -d ... co sample
  cd sample
  cvs rm -f TESTFILE
  touch testfile
  cvs add testfile
  cvs ci -m"changed case"

All is fine and dandy when I try to check out this modified repository
on a system with a case-sensitive filesystem, but when I try this on
Windows, I get the following:

  cvs -t -d ... co sample

-> main loop with CVSROOT=:pserver:......
 -> Connecting to ..........:2401
S-> do_module (sample, Updating, , )
S-> do_module (sample, Updating, , )
-> Create_Admin (sample, sample, /temp/cvs/sample, , , 0, 0, 1)
-> unlink(sample/CVS/Tag)
S-> Create_Admin (., sample, /temp/cvs/sample, HEAD, , 0, 0, 1)
S-> Parse_Info (/temp/cvs/CVSROOT/rcsinfo, sample, ALL)
S<- Create_Admin
S-> fopen(/temp/cvs/CVSROOT/history,a)
-> unlink(CVS/Entries.Static)
cvs server: Updating sample
U sample/TESTFILE
-> rename(.new.TESTFILE,TESTFILE)
-> Register(TESTFILE, 1.1, Fri May 30 19:32:47 2003, , HEAD )
S-> unlink_file(./CVS/Entries.Static)
S-> Reader_Lock(/temp/cvs/sample)
S-> RCS_checkout (/temp/cvs/sample/TESTFILE,v, 1.1, HEAD, , (function))
S-> server_register(TESTFILE, 1.1, , , HEAD, , )
S-> Register(TESTFILE, 1.1, , , HEAD )
S-> RCS_checkout (/temp/cvs/sample/TESTFILE,v, 1.1, HEAD, , (function))
S-> server_register(testfile, 1.1, , , HEAD, , )
S-> Register(testfile, 1.1, , , HEAD )
S-> Lock_Cleanup()
S-> rename(CVS/Entries.Backup,CVS/Entries)
S-> unlink_file(CVS/Entries.Log)
S-> rename(CVS/Entries.Backup,CVS/Entries)
S-> unlink_file(CVS/Entries.Log)
C sample/testfile
cvs-1.11.5.exe checkout: move away sample/testfile; it is in the way
-> rename(CVS/Entries.Backup,CVS/Entries)
-> unlink(CVS/Entries.Log)
cvs-1.11.5.exe checkout: dying gasps from ...... unexpected
-> Lock_Cleanup()

The version of the CVS client does not seem to matter and this exact
same process works with a CVS 1.11.5 server.

Does anyone have any suggestions? I was doing a bit of spelunking in the
code and it seem to me that to restore the 1.11.5 behaviour, filesubr.c
needs to have ign_case set to 0 in locate_file_in_dir (), ignoring the
'Case' command from the Windows client because even through Windows
cannot tell the difference, the server can. However, that is definately
not something I want to do as I do not undertsand the internals of CVS
well enough to know what side effects that might have.

Thanks for any insight or suggestions you can provide.

 - Rob

-- 
Robert J. Clark                   Quest Software
Software Developer                [EMAIL PROTECTED]



_______________________________________________
Info-cvs mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/info-cvs

Reply via email to