This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Slight problem with case sensitivity on managed mounts with CVS-1.11.6


Christopher Faylor wrote:

On Thu, Jul 22, 2004 at 10:27:38AM -0400, Ronald Landheer-Cieslak wrote:

Hello CVS maintainer (et al.),

I've got a slight problem with CVS when running it on a directory
mounted in managed mode: the directory being case-sensitive, ``cvs
update'' should *IMHO* not warn about a file whose name might clash
with another due to its case (and on ``cvs checkout'', it doesn't).

The file in question is called Hash.h, which has a little brother
called hash.h.

The error is emitted on line 1809 of src/client.c, which also contains
a lengthy comment on why the error may be emitted, confirming my
hypothesis.

My question is not: "please fix this.." - my question is whether you'd be interested in a fix. The fix would consist of
* checking whether the file being updated is on a managed mount (don't
know how to do that yet, but I assume it's possible)
+ if so, assume case-sensitivity
- if not, assume case-insensitivity
Why not send the comment and your hypothesis here rather than informing
everyone that there is a comment and asking if anyone would be
interested in a fix?  I don't think many people would be interested in
downloading the sources for cvs to see what you're talking about.  From
your description it is difficult to tell if your problem is with cygwin
managed mounts or with cvs.
OK, the problem is with CVS - the managed mounts are working properly.
CVS assumes Cygwin is/runs on a case-insensitive (file)system, which is usually the case. On managed mounts, however, the assumption fails, and CVS complains about conflicts in file names that do not exist. (I thought this was clear from the original post, but apparently, that was not the case..)


The comment says this:
/* This error might be confusing; it isn't really clear to
   the user what to do about it.  Keep in mind that it has
   several causes: (1) something/someone creates the file
   during the time that CVS is running, (2) the repository
   has two files whose names clash for the client because
   of case-insensitivity or similar causes, See 3 for
   additional notes.  (3) a special case of this is that a
   file gets renamed for example from a.c to A.C.  A
   "cvs update" on a case-insensitive client will get this
   error.  In this case and in case 2, the filename
   (short_pathname) printed in the error message will likely _not_
   have the same case as seen by the user in a directory listing.
   (4) the client has a file which the server doesn't know
   about (e.g. "? foo" file), and that name clashes with a file
   the server does know about, (5) classify.c will print the same
   message for other reasons.

   I hope the above paragraph makes it clear that making this
   clearer is not a one-line fix.  */

A wee bit further digging brings us to the isfile() function, of which diverse versions exist in the code. The solution would seem to be to
* either write a Cygwin-specific one or
* choose the right one to use


The patch would probably be Cygwin-specific, so I doubt it would be
possible to get it up-stream, but I'll try to make it as clean as
possible..
That seems to imply that the problem is with cvs since any fix to
cygwin would be cygwin-specific.  If that is the case, then any fix
should probably go upstream.
Yes, the problem is with CVS, not with Cygwin. Personally, I though the first paragraph of the original post made that clear - apparently, it didn't, so I apologize.

Also, the post was primarily intended for the CVS maintainer, whom I assumed has the source already and could trivially look up the file src/client.c. That being said, the comment in question is of no importance to my question: my question being "I found an itch in CVS: this is the itch, would you like me to scratch it?" the details of the scratching would only be interesting if there were any interest in the scratching itself were interesting..

rlc


-- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]