Subversion and case-insensitive filesystems
My Mac's filesystem is case-insensitive. It thinksFoo
and foo
are the same file.Subversion's filesystem is case-sensitive. It thinks Foo
and foo
are different files.
As you can imagine, this mismatch has hilarious consequences. If your repository contains a directory with both Foo
and foo
, then svn crashes hard when you try to checkout that directory:
svn: In directory 'project/src/com/publicobject'
svn: Can't copy 'project/src/com/publicobject/.svn/tmp/text-base/Foo.svn-base' to 'project/src/com/publicobject/Foo.tmp': No such file or directory
The solution for me was to:
- checkout the directory on a case-sensitive filesystem (ie. a linux machine)
- delete one of the offending files
- commit the delete
Bonus Material: how did I get myself in this situation?
I renamed a file from
OpenFileInIntelliJ.java
to OpenFileInIntellij.java
. Subversion cannot actually rename a file. Instead, it fakes it by creating a copy and then deleting the original. As you can imagine, this doesn't work too well on a case-insensitive file system...