I just realized that the default file system that comes with a Mac OS X is case insensitive (also case preserving but more on that later) by losing a day's work (ouch!). What happened was that I had some code on an SVN repository and having transformed the code to a class, I wanted to change the file's name so that is started with an upper case letter. I first tried "svn move" with no luck:

move /MyProjects/secretone/builder/lib/locale.php /MyProjects/secretone/builder/lib/Locale.php
move /MyProjects/secretone/builder/lib/util.php /MyProjects/secretone/builder/lib/Util.php
svn: Path '/MyProjects/secretone/builder/lib/Util.php' is not a directory
svn: Path '/MyProjects/secretone/builder/lib/Locale.php' is not a directory

This should have rang alarm bells. It did not. Seeing this didn't work, I manually moved the file and did a commit:

add -N /MyProjects/secretone/builder/lib/Locale.php
A /MyProjects/secretone/builder/lib/Locale.php
add -N /MyProjects/secretone/builder/lib/Util.php
A /MyProjects/secretone/builder/lib/Util.php
delete --force /MyProjects/secretone/builder/lib/locale.php /MyProjects/secretone/builder/lib/util.php
D /MyProjects/secretone/builder/lib/locale.php
D /MyProjects/secretone/builder/lib/util.php
commit -m "ADD: Added some test configurations" /MyProjects/secretone/builder/index.php /MyProjects/secretone/builder/lib/Locale.php /MyProjects/secretone/builder/lib/Util.php /MyProjects/secretone/builder/lib/locale.php /MyProjects/secretone/builder/lib/util.php /MyProjects/secretone/builder/tests/TestHelper.php /MyProjects/secretone/builder/tests/lib /MyProjects/secretone/builder/tests/lib/LocaleTest.php
svn: Commit failed (details follow):
svn: '/MyProjects/secretone/builder/lib/Locale.php' is scheduled for addition, but is missing
svn: Commit failed (details follow):
svn: '/MyProjects/secretone/builder/lib/Locale.php' is scheduled for addition, but is missing
svn: '/MyProjects/secretone/builder/lib/Locale.php' is scheduled for addition, but is missing

The errors in the end are true errors. SVN first deleted the files "util.php" and "locale.php" which were in fact "Util.php" and "Locale.php" files and then tried to add these files (oh, thanks!). The files are gone, thanks to HFS+ and svn working together. Gotta start again. Aptana doesn't seem to be good at taking backups neither, so...

HFS+ is the default file system Mac OS X uses. The other file system, UFS is the way a Unix file system should behave, it is case sensitive but I've read many reviews that it is a bit slow compared to HFS+ on a Mac. A page on Apple website compares the two file systems but it doesn't say how you can learn which one you are using on your Mac. The problem I experienced actually does not have much to do with the version control I'm using, svn, because it seems that git also experiences the same problem when on a case insensitive file system.

I have been working on a Mac for two months now and I always assumed the file system was case sensitive because of the Unix background Mac's have and also thanks to the file names that come by default. Take the libraries folder for example, it starts with an upper case letter: /Library. Many other folders have similar mix case names which made me think the OS was running on a case sensitive file system. This is called case-preserving, and it seems that I forgot about Windows which is also similar (it's been 4 years since I stopped using Windows). On a Windows machine things get a lot more complicated because MS says NTFS supports case sensitivity but a lot of the applications do not. Say you open the file navigator (the Explorer) and create a file (or a folder) called "MS". When you think about case sensitivity, you should be able to create another file having name, say "ms". But it turns out you can't. MS says:


NTFS supports two slightly different modes of operation that can be selected by the subsystem of the application interacting with NTFS.

So much for consistency. And thanks Microsoft for making such a shitty OS.

So moral of the story is, learn about your file system throughly before you do anything. Oh, and the other one, stay away from a Mac.

Jokes aside, I think Linux offers the best development environment out there.