You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by John Barstow <Jo...@gfsg.co.nz> on 2003/06/29 22:00:39 UTC

Case-sensitivity and Windows

This should probably in the book's Troubleshooting section...

I recently had a developer add a file twice, with slight differences in
case.  This of course causes problems with updates and checkouts; since the
filesystem is case-insensitive.
There's probably a switch or configuration option somewhere to handle this,
I just don't know where this is documented.

The fix, in the meantime, was to remove one version using the url syntax.

John C Barstow

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Case-sensitivity and Windows

Posted by Chris Hecker <ch...@d6.com>.
>I'm not uncaring about the issue, but understand that I'd prefer to see 1.0
>sooner rather than later (so I won't be working on it, personally). There
>are certain edge cases that just won't be fixed by a 1.0 release unless
>additional people throw in some assistance.

This is totally fair.  I'm going to fix the win32 ~/.subversion thing 
first, if I end up contributing, because hey, it sticks in my craw.  My 
point was just that this is a valid complaint, and something that should be 
in svn.  Several of the replies were saying it shouldn't be part of svn, 
which is wrong in my opinion.  It's totally valid to say "unless somebody 
steps up to the plate this won't make 1.0 because of resources and 
priorities", but it's not valid to say "this should be user policy", 
because it hoses people silently.  That attitude was all I was 
protesting.  Obviously "should" doesn't get things done.

I wonder if there's a simple way to get 80% of the way there for very 
little work.  Boil down all the currently supported filesystem constraints 
(unix, win32, mac, vms?) into a single check, and just issue a warning 
(that's both disablable and errorizable) if you violate any of them during 
add, rename, import, etc ("warning: %s could have conflicts on some 
filesystems" or whatever).  So, it would check for the union of illegal 
chars, file name lengths, path lengths, case sensitivity, etc.  It would 
attempt to do a thorough job, but it wouldn't be perfect.  It would get all 
of the obvious low-hanging fruit, however.  Would there be an easy single 
choke point for this function to be called to validate a new potential 
filename?  Would it have to live on the server, or could it live on the 
client and still work?

Perhaps somebody affected by this can chip in and write the function if 
they have a more experienced svn person point them in the right direction.

Chris



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Case-sensitivity and Windows

Posted by Greg Stein <gs...@lyra.org>.
On Sun, Jun 29, 2003 at 11:50:12PM -0700, Chris Hecker wrote:
>...
> If there's a possibility of getting screwed up and losing a weekend to a 
> problem (like what happened here), then the tool should handle it.  Better

"should" ...

The problem is extremely difficult to handle "Right" and without surprise.
It is also a bitch to deal with the case-insensitive filesystems. Believe
me, we've talked about this extensively before. Nobody has dug in to get it
fixed because it is hard to do right. It also doesn't come up all that
often. We've seen maybe four people have problems, and yes: it does cause
some pain.

> to spend a week implementing a feature in the tool than to spend #users * a 
> weekend for all eternity.

Or, hey, how about I throw another equation at you? We deliver 1.0 to people
five weeks sooner and make #users much happier? Which is larger? Personally,
I think more people will take a 1.0 release *first*, then solve the case
sensitivity *second*.

> At the very least, svn should know what's going wrong (the files in the 
> repository would be the same on the OS that's currently co/up'ing) and tell 
> the user (and then they can rename through the URL interface).  Randomly 
> failing is wrong.  It's not that hard to spec out the currently supported 
> filesystems and what their constraints are, and require somebody to do that 
> for any port target for svn.  There should be a spec for what the 
> repository stores as well (I assume it follows url rules, which is fine).

There are a lot of "should" statements in there. And a good number of work
items. If you're set on this, then it might be great item for you to tackle
to contribute to the project. Fixing the case-sensitivity problem isn't
going to be rejected, but I don't know that you're going to find a bunch of
people stepping up to the plate (or they would have already).

I'm not uncaring about the issue, but understand that I'd prefer to see 1.0
sooner rather than later (so I won't be working on it, personally). There
are certain edge cases that just won't be fixed by a 1.0 release unless
additional people throw in some assistance.

Cheers,
-g

-- 
Greg Stein, http://www.lyra.org/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Case-sensitivity and Windows

Posted by Chris Hecker <ch...@d6.com>.
>Unfortunately if Subversion is going to be useful on Windows it is going 
>to have to play nicely with case-insensitivity and other file system 
>restrictions.  Not only Windows; almost every platform has some different 
>file naming restrictions.  I think Subversion will need, to some extent, 
>generalised support for file system restrictions:

I agree with this.  This discussion so far kind of reminds me of cvs and 
binary files ("it's too hard to do right", "the user should have to specify 
that and it shouldn't be automatic", etc.).  SVN was right to handle binary 
files transparently, and the "you don't need that" attitude was wrong, 
especially when it came to costing the user time and potentially data.  If 
there's a possibility of getting screwed up and losing a weekend to a 
problem (like what happened here), then the tool should handle it.  Better 
to spend a week implementing a feature in the tool than to spend #users * a 
weekend for all eternity.

At the very least, svn should know what's going wrong (the files in the 
repository would be the same on the OS that's currently co/up'ing) and tell 
the user (and then they can rename through the URL interface).  Randomly 
failing is wrong.  It's not that hard to spec out the currently supported 
filesystems and what their constraints are, and require somebody to do that 
for any port target for svn.  There should be a spec for what the 
repository stores as well (I assume it follows url rules, which is fine).

Chris



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Case-sensitivity and Windows

Posted by Julian Foad <ju...@btopenworld.com>.
Garrett Rooney wrote:
> Julian Foad wrote:
> 
>> Unfortunately if Subversion is going to be useful on Windows it is 
>> going to have to play nicely with case-insensitivity and other file 
>> system restrictions.
...
> 
> I'm unclear why this has to be part of Subversion itself.  It seems like 
> project policy on what filenames are appropriate are just that:  project 
> policy, no different from policy regarding use of branches and tags or 
> any number of other things.  All this stuff can be dealt with via a 
> pre-commit hook if needed.  Now if someone wants to write such a hook 
> script, more power to them, but I don't see how this is more complex 
> than that.

You're probably right as far as file name validity is concerned.  I confused the issue by mentioning that.  The specific use case that started this thread (adding a file twice with only case differences) could also have been caught by a pre-commit hook.  However, I have a strong feeling that case insensitivity will require some support code within Subversion.  The CygWin people would know a lot about that.  Also GNU "make" has a compile-time option to work properly on case-insensitive file systems; it might be interesting to look at what this does.

I agree that the less knowledge Subversion has about the quirks of specific file systems, the better.

- Julian



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Case-sensitivity and Windows

Posted by Garrett Rooney <ro...@electricjellyfish.net>.
Julian Foad wrote:

> Garrett Rooney wrote:
> 
>> John Barstow wrote:
>>
>>> I recently had a developer add a file twice, with slight differences in
>>> case.  This of course causes problems with updates and checkouts; 
>>> since the filesystem is case-insensitive.
>>
>>
>> There are just too many filesystem dependent special cases that we 
>> don't bother trying to handle them.
> 
> 
> Unfortunately if Subversion is going to be useful on Windows it is going 
> to have to play nicely with case-insensitivity and other file system 
> restrictions.  Not only Windows; almost every platform has some 
> different file naming restrictions.  I think Subversion will need, to 
> some extent, generalised support for file system restrictions:
> 
>  Is this file name valid (on file system X)?
>  Is this file name the same as that one (on file system X)?
>  etc.
> 
> and a policy or choice of policies for when to enforce these 
> restrictions (at check-in time, or check-out/update time; per repository 
> or per directory; etc.)
> 
> The details of how it can best do this will no doubt be thrashed out on 
> this list in the near future.

I'm unclear why this has to be part of Subversion itself.  It seems like 
project policy on what filenames are appropriate are just that:  project 
policy, no different from policy regarding use of branches and tags or 
any number of other things.  All this stuff can be dealt with via a 
pre-commit hook if needed.  Now if someone wants to write such a hook 
script, more power to them, but I don't see how this is more complex 
than that.

For the record, Perforce, which is quite 'useful on Windows', does not 
have any such seat belts.  I had a problem when my company first started 
using Perforce with a file named prn.c.  The server was on a win32 
machine at the time, and windows interpreted the prn as 'printer', which 
caused no end of grief.

-garrett


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Case-sensitivity and Windows

Posted by Julian Foad <ju...@btopenworld.com>.
Garrett Rooney wrote:
> John Barstow wrote:
> 
>> I recently had a developer add a file twice, with slight differences in
>> case.  This of course causes problems with updates and checkouts; 
>> since the filesystem is case-insensitive.
> 
> There are just too many filesystem dependent special cases that we don't 
> bother trying to handle them.

Unfortunately if Subversion is going to be useful on Windows it is going to have to play nicely with case-insensitivity and other file system restrictions.  Not only Windows; almost every platform has some different file naming restrictions.  I think Subversion will need, to some extent, generalised support for file system restrictions:

  Is this file name valid (on file system X)?
  Is this file name the same as that one (on file system X)?
  etc.

and a policy or choice of policies for when to enforce these restrictions (at check-in time, or check-out/update time; per repository or per directory; etc.)

The details of how it can best do this will no doubt be thrashed out on this list in the near future.

- Julian



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Case-sensitivity and Windows

Posted by Garrett Rooney <ro...@electricjellyfish.net>.
John Barstow wrote:
> This should probably in the book's Troubleshooting section...
> 
> I recently had a developer add a file twice, with slight differences in
> case.  This of course causes problems with updates and checkouts; since the
> filesystem is case-insensitive.
> There's probably a switch or configuration option somewhere to handle this,
> I just don't know where this is documented.
> 

No, there isn't a switch or configuration option to handle it.  There 
are just too many filesystem dependent special cases that we don't 
bother trying to handle them.  The same thing problem also occurs if you 
try to use a filename with a : in it.  Works everywhere but windows... 
Or if you have filenames that differ only in case (breaks on Mac OS X, 
probably windows).

-garrett


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org