I'm genuinely curious: why do this, as opposed to using a DVCS like git?
I'm genuinely curious: why do this, as opposed to using a DVCS like git?
I guess you could say Dropbox gives me finer sync granularity than git does.
Dropbox seems like a perfect solution: have a single place where you keep code, develop on two machines, just pick up your laptop and leave whenever you want, without worrying about sync.
Put it another way, I don't understand why you'd use Dropbox at all, after all you could easily version all your files in git, using push/pull/branch/commit/rebase to get your data to your different machines. Git handles this problem very well, after all.
Obviously with regular files, that is not an issue, so Dropbox works well. (unless you're managing them with git, I guess)
If you're willing to accept the "lightness" of git branching and commits, it's possible to "save and sync" your work very quickly. Assuming you're on a dev branch:
git add -A
git commit -m "temp commit 2013-7-3"
git push origin
You can even script this, see for example:
http://stackoverflow.com/questions/8482843/git-commit-bash-s...
Then when you're ready to work on a different machine, you fetch from origin.
If you want to keep your commits meaningful on your dev branch, you can create a temp branch first, then rebase later to get rid of the ugly temp commit.
git checkout -b temp123
Dropbox could help there, but it does not.
So I work on a directory that is in dropbox, and in git, and I can instantly shutdown my PC and start writing code on the laptop. Commiting changes is a separate step. It's quite convenient. Also I can test the code by accessing dropbox public link (it's mostly javascript and static websites), and there's no separate "deploy" step - when I save a file on any computer the change is ready to be tested, always at the same place. With git I would need to remember to commit, and update before I test, or I would need to set up a test server on every computer, and depending on where I work I would need to access different address. The difference between 15 seconds and 0 seconds to test small change is VERY significant.
The way people generally use source control isn't to push every single line added or changed to a remote copy of the repo as soon as it is done. A commit is more tied to completing a task, you need something else to cover you for loss for smaller amounts of code than that if your computer dies.
More specifically to me, it depends on what branch I'm on. If I'm on dev, I have no problem with big commits. (For features I'll often set a bookmark [hg]- maybe even clone and work from the clone if it's risky).
But if I'm on test or hotfixing on stable, I use very small commits so that I can easily graft (backport) back to dev.
But at the very least I have more than one commit message like -FIX blah blah commit so can get from <name of other machine>
That way the client can have programmers/designers change their UI without needing any access into the server. It also allows me to share each site and doesn't bring the entire headache of managing accounts. I simply share the yoursite.com folder to the client. If a client has multiple sites it's just as easy to share all of them.
Also, in many cases it is easier for a graphic designer or just a customer to put stuff in a Dropbox folder that will sync to their website, than uploading stuff using a web form or learning to use git and X amount of deployment tools.
... unless you're running on batteries.