I'm currently using Dropbox and sync all my coding folders (mostly Rails/Node.js/Go/C#). I'd be willing to switch if one of the other providers would have smarter folder exclusion (something like .gitignore or I would even take having to make a sentinel file like .nosync in every folder).
I'd like to exclude things like node_modules, build folders etc. It's gotten to a point where I have to disable Dropbox during development and let it catch up later otherwise it chokes up CPU at 100% doing it's hashing.
Dropbox does realtime, automatic backup of your work with file version history in case you accidentally deleted or overwrote something. Git solves other problems.
Dropbox does those things, however when you are programming you are generally not working in a single file. You are working across many files with many various temporary files.
This complicates the state of a development folder. If Dropbox went down mid upload or you hibernated your computer before it had completely uploaded (it happens), you then work on another computer and that uploads some files, suddenly you are going to get a merge conflict which Dropbox cannot easily help you with.
Software development is not one file being edited, its a collection of files in a particular state that give it meaning. Dropbox is good, its gotten better but its still not the right tool for the job.
Git (or any DVCS) is good enough that you can commit and push every 5mins if you wanted. The point is that the state a a whole makes sense.
Plus what about when you start working with other developers, you cannot all work in Dropbox, you'll get merge conflicts every day. What about bug finding features like bisect? Or just having a log of when thing happened?
I started doing it primarily so that I could leave my work computer and start working almost instantaneously on my home computer. Since the Retina, I've been using the same machine for both but it's been less of an issue but it's still nice to know that you could lose the machine and not lose any work in any repo in your ~/dev folder.
Sounds like the only way to do it right now is via the Seadrive client proposed below - will definitely move to the first major provider that offers this service.
SeaFile has a .ignore file with pretty much the same syntax as a .gitignore. And it can also operate on multiple independent directories, has client-side encryption, it's open source and you can host it yourself. So you could actually still use dropbox as backend for the storage, and run both client and server on your machine if you wish. Link: http://seafile.com/en/home/
I've been using seafile for 7 months now and cannot praise it enough. A really nice piece of free software. Hopefully some smart people will do code reviews and improvements in the background to ensure behind the scenes everything is just as nice.
I'd like to exclude things like node_modules, build folders etc. It's gotten to a point where I have to disable Dropbox during development and let it catch up later otherwise it chokes up CPU at 100% doing it's hashing.
Any advice would be greatly appreciated!