In search for a cheap alternative to Dropbox for our little society I came across SparkleShare. That’s a File sync application available for Mac, Windows and Linux that uses Git as a backend.
The advantage is that you can either host your Git repository on your own server or on one of the publicly available providers like GitHub.
For our purpose I came across and issue with files cases. While the standard Mac file system looks like its case sensitive, in fact it isn’t it just preserves the case via some metadata. You can’t have two files with the same name that just differ in case. So I decided to put our SparkleShare folder into a DiskImage (a sparse bundle) that contains a real cases sensitive file system.
To tell SparkleShare that is should search for the folders to sync in a different location than you home folder you have to insert a snippet of XML configuration into your SparkleShare config:
Now I had the challenge to mount this DiskImage before starting SparkleShare during login. Just putting the DiskImage into the startup items for a user helps. But you might run into cases where the DiskImage is not cleanly unmounted and leaves the directory name in your /Volumes folder. On the next login the DiskImage is mounted on a different path and SparkleShare doesn’t find it.
I ended up writing a little Shell script to take care of these cases and mount the DiskImage to the correct folder and launch SparkleShare. I’ve posted it on GitHub so you can use it if you want.
Ensure you specify that this Shell-Script is always opened with the Terminal Application. In order to specify this, you select the script in the Finder and press Cmd+i. In the Inspector window you can specify which application is used to open this file.
You also need to ensure that the script is executable on the Unix Level. You open the Terminal.app, go to the directory that contains the script and issue a chmod u+x mount_sparkle.sh
Finally you put this script into you login items so it’s executed whenever you login. There is no need to have the SparkleBundle itself or SparkleShare.app in your login items anymore.