You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Eric Lemes <er...@gmail.com> on 2006/10/05 21:37:56 UTC

Windows case-sensitive filesystem issues

Wow.. that's great.

svnadmin create c:\svn\test

svn checkout http://localhost:8080/svn/test test1
copy c:\test.txt .\test.txt
svn add test.txt
svn commit -m "Test"

del .\test.txt
copy c:\test.txt .\TEST.TXT
svn add test.txt
svn commit -m "Test"

svn checkout http://localhost:8080/svn/test test2
A    test2\TEST.TXT
A    test2\test.txt
svn: In directory 'test2'
svn: Can't copy 'test2\_svn\tmp\text-base\test.txt.svn-base' to
'test2\_svn\tmp\
test.txt.tmp.tmp': The system cannot find the file specified.

In the server side, I got two files, test.txt and TEST.TXT. Windows client
cannot checkout both in the same dir.

Is there any way to workaround this? Can I consider this a bug?


Thanks,

Eric

Re: Windows case-sensitive filesystem issues

Posted by Ryan Schmidt <su...@ryandesign.com>.
On Oct 5, 2006, at 17:17, Vineet Kumar wrote:

> Ryan Schmidt wrote:
>
>> On Oct 5, 2006, at 16:37, Eric Lemes wrote:
>>
>>> svnadmin create c:\svn\test
>>>
>>> svn checkout http://localhost:8080/svn/test test1
>>> copy c:\test.txt .\test.txt
>>> svn add test.txt
>>> svn commit -m "Test"
>>>
>>> del .\test.txt
>>> copy c:\test.txt .\TEST.TXT
>>> svn add test.txt
>>> svn commit -m "Test"
>>>
>>> svn checkout http://localhost:8080/svn/test test2
>>> A    test2\TEST.TXT
>>> A    test2\test.txt
>>> svn: In directory 'test2'
>>> svn: Can't copy 'test2\_svn\tmp\text-base\test.txt.svn-base' to
>>> 'test2\_svn\tmp\
>>> test.txt.tmp.tmp': The system cannot find the file specified.
>
>> The fact that you can have a local file called TEST.TXT, do "svn add
>> test.txt", and Subversion adds it to the repository as test.txt
>> instead of as TEST.TXT, is IMHO a bug.
>
> Is there a bug here?  It looks like the second time, Eric typed
> "svn add test.txt", but the file was named TEST.TXT, and subversion
> added it as TEST.TXT.  I agree that if subversion added it as test.txt
> that would be a bug, but I don't see any evidence that that's what
> subversion is doing.

$ cd /tmp
$ svnadmin create testrepo
$ svn co file:///tmp/testrepo testwc
Checked out revision 0.
$ cd testwc
$ touch FOO.TXT
$ svn add foo.txt
A         foo.txt
$ svn ci -m ""
Adding         foo.txt
Transmitting file data .
Committed revision 1.
$ ls
FOO.TXT
$ svn ls file:///tmp/testrepo
foo.txt
$

Working copy contains FOO.TXT but repository ends up containing  
foo.txt == potential unpleasantness.



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

Re: Windows case-sensitive filesystem issues

Posted by Vineet Kumar <vi...@doorstop.net>.
* Ryan Schmidt (subversion-2006d@ryandesign.com) [061005 14:43]:
> On Oct 5, 2006, at 16:37, Eric Lemes wrote:
> 
> >svnadmin create c:\svn\test
> >
> >svn checkout http://localhost:8080/svn/test test1
> >copy c:\test.txt .\test.txt
> >svn add test.txt
> >svn commit -m "Test"
> >
> >del .\test.txt
> >copy c:\test.txt .\TEST.TXT
> >svn add test.txt
> >svn commit -m "Test"
> >
> >svn checkout http://localhost:8080/svn/test test2
> >A    test2\TEST.TXT
> >A    test2\test.txt
> >svn: In directory 'test2'
> >svn: Can't copy 'test2\_svn\tmp\text-base\test.txt.svn-base' to  
> >'test2\_svn\tmp\
> >test.txt.tmp.tmp': The system cannot find the file specified.

> The fact that you can have a local file called TEST.TXT, do "svn add  
> test.txt", and Subversion adds it to the repository as test.txt  
> instead of as TEST.TXT, is IMHO a bug.

Is there a bug here?  It looks like the second time, Eric typed
"svn add test.txt", but the file was named TEST.TXT, and subversion
added it as TEST.TXT.  I agree that if subversion added it as test.txt
that would be a bug, but I don't see any evidence that that's what
subversion is doing.

good times,
Vineet
-- 
http://www.doorstop.net/
-- 
#include<stdio.h>
int main() {
    puts("Reader! Think not that \n"
         "technical information \n"
         "ought not be called speech;");
    return 0;
}

Re: Windows case-sensitive filesystem issues

Posted by Duncan Murdoch <mu...@stats.uwo.ca>.
On 10/6/2006 1:32 PM, Eric Lemes wrote:
> 2006/10/6, Ted Dennison <de...@ssd.fsi.com>:
>>
>>
>>
>> If it were up to me, I'd want Win32 builds of SVN client tools to be
>> case-insensitive. I realize that would probably cause problems for
>> others though.
>>
> 
> I think this must be some kind of configuration in the repository, this is
> why I don't think a hook script approach isn't wrong.
> 
> I can have a SVN windows server, with repos for applications built under
> linux and vice-versa.

I think that's a different issue:  the files in the repos are never 
named as files in the host file system, just as database records (BDB) 
or numeric filenames (FSFS).  Internally the svn server maintains a 
case-sensitive internal file system regardless of where it is hosted.

Duncan Murdoch

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

Re: Windows case-sensitive filesystem issues

Posted by Eric Lemes <er...@gmail.com>.
2006/10/6, Ted Dennison <de...@ssd.fsi.com>:
>
>
>
> If it were up to me, I'd want Win32 builds of SVN client tools to be
> case-insensitive. I realize that would probably cause problems for
> others though.
>

I think this must be some kind of configuration in the repository, this is
why I don't think a hook script approach isn't wrong.

I can have a SVN windows server, with repos for applications built under
linux and vice-versa.


Eric

Re: Windows case-sensitive filesystem issues

Posted by Ted Dennison <de...@ssd.fsi.com>.
Ed Price wrote:
> I'd like to agree but I'm not so sure...
> Should it always use the "real" case of the file (whatever that means).
> Or should it always use the name *specified by the user*?
> Maybe you're right, I don't know...
The worst problem I've had with this was in trying to develop a SCC 
implementation. VisualStudio doesn't necessarily provide the 
capitalization for files and directories that actually exists on the 
filesystem. The SVN API seems to require the capitalization that is used 
in the repository, or bad things happen. I could work around that by 
compiling a big list of the proper filenames for everything and 
searching for the proper match for every file VS gives me, but that's 
really slow, and doesn't work for new files.

If it were up to me, I'd want Win32 builds of SVN client tools to be 
case-insensitive. I realize that would probably cause problems for 
others though.

-- 
T.E.D.   Work     -  mailto:dennison@ssd.fsi.com
         Home     -  mailto:dennison@telepath.com (Yahoo: Ted_Dennison)
         Homepage -  http://www.telepath.com/~dennison/Ted/TED.html

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

Re: Windows case-sensitive filesystem issues

Posted by Ed Price <ed...@gmail.com>.
> > The fact that you can have a local file called TEST.TXT, do "svn add
> > test.txt", and Subversion adds it to the repository as test.txt
> > instead of as TEST.TXT, is IMHO a bug.
>
> IMO, it's a bug.

I'd like to agree but I'm not so sure...
Should it always use the "real" case of the file (whatever that means).
Or should it always use the name *specified by the user*?
Maybe you're right, I don't know...

I *do* think that the horrendous error message is a bug:

> svn: Can't copy 'test2\_svn\tmp\text-base\test.txt.svn-base' to 'test2\_svn\tmp\
> test.txt.tmp.tmp': The system cannot find the file specified.

I've been bitten by this issue in the past and what really bothered
me more than the inability to check out was that it took such an
annoyingly long time before I figured out what the problem was.

It would be nice if svn client could give a more helpful error message.

There does appear to be an issue for this:

http://subversion.tigris.org/issues/show_bug.cgi?id=2010

See also:

http://subversion.tigris.org/issues/show_bug.cgi?id=667

-ed

[PS resent to list, sorry to Eric for the dupe...]

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

Re: Windows case-sensitive filesystem issues

Posted by Eric Lemes <er...@gmail.com>.
2006/10/5, Ryan Schmidt subversion-2006d@ryandesign.com:
>
>
> The Subversion repository is case-sensitive, so it has no problem
> storing files whose names differ only in case. The usual Windows and
> Mac OS X filesystems do have problems with this because they are case-
> insensitive (but case-preserving).
>
> You can install a pre-commit hook to prevent someone from committing
> a file whose name differs only in case from that of an existing file
> in the repository. But you would have to write the script, or find
> one that someone else has already written.
>
> The fact that you can have a local file called TEST.TXT, do "svn add
> test.txt", and Subversion adds it to the repository as test.txt
> instead of as TEST.TXT, is IMHO a bug.


IMO, it's a bug.

I think if SVN is multi-platform, It may handle these kind of issues easily.
Somethink like a repository creation option, switch, configuration, not a
hook script.

But I think the pre-commit hook will solve my problem. One more
administrative issue for someone handle.


Eric

Re: Windows case-sensitive filesystem issues

Posted by Nathan Kidd <na...@spicycrypto.ca>.
Ryan Schmidt wrote:
> On Oct 5, 2006, at 16:37, Eric Lemes wrote:
>> In the server side, I got two files, test.txt and TEST.TXT. Windows 
>> client cannot checkout both in the same dir.
> 
> You can install a pre-commit hook to prevent someone from committing a 
> file whose name differs only in case from that of an existing file in 
> the repository. But you would have to write the script, or find one that 
> someone else has already written.

Such as those in: 
http://svn.collab.net/viewvc/svn/tags/1.4.0/contrib/hook-scripts/

I personally like case-insensitive.py
http://svn.collab.net/viewvc/svn/tags/1.4.0/contrib/hook-scripts/case-insensitive.py?revision=19524&view=markup

-Nathan

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

Re: Windows case-sensitive filesystem issues

Posted by Ryan Schmidt <su...@ryandesign.com>.
On Oct 5, 2006, at 16:37, Eric Lemes wrote:

> svnadmin create c:\svn\test
>
> svn checkout http://localhost:8080/svn/test test1
> copy c:\test.txt .\test.txt
> svn add test.txt
> svn commit -m "Test"
>
> del .\test.txt
> copy c:\test.txt .\TEST.TXT
> svn add test.txt
> svn commit -m "Test"
>
> svn checkout http://localhost:8080/svn/test test2
> A    test2\TEST.TXT
> A    test2\test.txt
> svn: In directory 'test2'
> svn: Can't copy 'test2\_svn\tmp\text-base\test.txt.svn-base' to  
> 'test2\_svn\tmp\
> test.txt.tmp.tmp': The system cannot find the file specified.
>
> In the server side, I got two files, test.txt and TEST.TXT. Windows  
> client cannot checkout both in the same dir.
>
> Is there any way to workaround this? Can I consider this a bug?

The Subversion repository is case-sensitive, so it has no problem  
storing files whose names differ only in case. The usual Windows and  
Mac OS X filesystems do have problems with this because they are case- 
insensitive (but case-preserving).

You can install a pre-commit hook to prevent someone from committing  
a file whose name differs only in case from that of an existing file  
in the repository. But you would have to write the script, or find  
one that someone else has already written.

The fact that you can have a local file called TEST.TXT, do "svn add  
test.txt", and Subversion adds it to the repository as test.txt  
instead of as TEST.TXT, is IMHO a bug.


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

Re: Windows case-sensitive filesystem issues

Posted by Duncan Murdoch <mu...@stats.uwo.ca>.
On 10/5/2006 5:37 PM, Eric Lemes wrote:
> Wow.. that's great.
> 
> svnadmin create c:\svn\test
> 
> svn checkout http://localhost:8080/svn/test test1
> copy c:\test.txt .\test.txt
> svn add test.txt
> svn commit -m "Test"
> 
> del .\test.txt
> copy c:\test.txt .\TEST.TXT
> svn add test.txt
> svn commit -m "Test"
> 
> svn checkout http://localhost:8080/svn/test test2
> A    test2\TEST.TXT
> A    test2\test.txt
> svn: In directory 'test2'
> svn: Can't copy 'test2\_svn\tmp\text-base\test.txt.svn-base' to
> 'test2\_svn\tmp\
> test.txt.tmp.tmp': The system cannot find the file specified.
> 
> In the server side, I got two files, test.txt and TEST.TXT. Windows client
> cannot checkout both in the same dir.
> 
> Is there any way to workaround this? Can I consider this a bug?

There's an FAQ item on this issue:

http://subversion.tigris.org/faq.html#case-change

The workarounds are to use a different filesystem, or to do a server 
side move of one of the files to a name that doesn't conflict, etc.

Duncan Murdoch

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