Gitting over Dropbox: the preamble
April 7th, 2011 by ravi

I am fairly certain I was one of the earliest adopter of Dropbox. I loved the simplicity of the application and the free version provided a generous amount of disk space (2GB). I used it religiously, recommended it to friends, and was ready to drop down to the terminal to create symlinks to get over Dropbox’s one big weakness: it’s crippling need for all sync’ed files to be rooted under a single directory.

Then things started falling apart.

Dropbox claims to “auto-detect proxy settings” but it does nothing of that sort. A well behaved Mac app should obtain proxy settings from the system wide preferences. Dropbox seems to pick them out of /dev/random. Sometimes the Dropbox menubar carton spins in vain trying to connect. At other times the app pops up a helpful warning that the proxy settings are incorrect – those are the times when it actually does manage to connect.

Then there are the endless warnings about lack of permissions for certain files and the mysterious “directory_not_empty”. The hundreds of files named “original-name-conflicted-copy…”. This was getting unreliable. And Dropbox support showed little interest in dealing with pesky old me.

So I stopped using Dropbox.

But of course the problem it is intended to solve didn’t disappear. What next? SugarSync, Windows Mesh (or is Live Mesh? Or Live Sync?)? The search was fatiguing and fruitless. Then one day, while I was pushing my code to GitHub so I could work on it on my other computer, something stirred in my feeble mind. Here’s a tool that works everywhere (including through SSH proxies), is explicitly crafted for resolving conflicts between versions of files, supports pulling and pushing across multiple computers, can exchange files over many different transports, and can be hosted on any system that has an SSH server on it.

So, this then is my new plan. Getting a Dropbox replacement together using a hosting provider and Git. I would tell Git which files I wanted to sync and which not, and that would just work. Using Git would even let me add comments to changes I made to files. I would use GitX or equivalent to merge conflicting changes. The only thing left was to find a way to to automatically push and pull changed files or at least notify me of the need to do so. Git (or the ‘find’ command) can tell me when a file has changed, so push prompting would only need a UI. A UI would also be needed to prompt me to pull changes. And for that there is Growl.

Gadzooks! I think this can be done.

More soon…

3 Responses  
  • w0qj writes:

    Good article – here is another cloud storage solution that is fully encrypted:
    With SugarSync, you get 5GB of cloud storage space with the FREE version, but now there is no restriction to the number of computers you can sync/backup (up from 2).
    It gives you the ability to upload and sync any folder on your computer.
    It is the only service that offers such a broad device and OS support with apps for BlackBerry, Android, iPhone/iPad, Symbian, not to mention your computer!
    You can also stream MP3 music files to your smartphone or computer.

    Also if you use the below referral code you get a bonus 500MB extra on top of your Free 5GB!

    Hope it helps someone.

  • EsotericAlgorithm writes:

    Any progress on this front?

    • ravi writes:

      Yes, indeed! I have a good bit of my files being sync’ed now using Git. Doesn’t work well for software managed files (like photographs controlled by iPhoto on my Mac) but I do have cron jobs that alert me when files have changed and need to be Git’ed.

Leave a Reply

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

If you need help with one of my software projects, please click: Using that link, you might even find a previous report of (and solution for) the issue!
»  Substance: WordPress  »  Style: Ahren Ahimsa