With regards to small teams using Dropbox:
If each developer has their own writable bare repository on Dropbox, which is pull only to other developers, then this facilitates code sharing with no risk of corruption!
Then if you want a centralized 'mainline', you can have one developer manage all the pushes to it from their own repo.