Git is great and Dropbox is awesome and recently I found a way to combine the two.
I host my open source projects on github (as well as bitbucket – I'm a happy Mercurial user as well) but there are some private and/or client projects I don't want to store on those sites.
Git, of course, doesn't require a server repository. So you can work locally while still having full version control. However, I like the comfort of syncing to an offsite repository so I tend to push my changes to the remote server multiple times per day (also, old svn habits die hard).
For git repositories that I don't want hosted on github, I push to a git repository sitting in Dropbox instead. The push is handled locally and Dropbox performs all the magic of syncing to the cloud (my offsite backup) and to my other computers/devices (switching dev computers isn't a problem). Simple, fast, nice.
Here's how I set up a bare git repository in Dropbox for a project:
$ mkdir ~/Dropbox/src/git-server
I host my open source projects on github (as well as bitbucket – I'm a happy Mercurial user as well) but there are some private and/or client projects I don't want to store on those sites.
Git, of course, doesn't require a server repository. So you can work locally while still having full version control. However, I like the comfort of syncing to an offsite repository so I tend to push my changes to the remote server multiple times per day (also, old svn habits die hard).
For git repositories that I don't want hosted on github, I push to a git repository sitting in Dropbox instead. The push is handled locally and Dropbox performs all the magic of syncing to the cloud (my offsite backup) and to my other computers/devices (switching dev computers isn't a problem). Simple, fast, nice.
Here's how I set up a bare git repository in Dropbox for a project:
$ mkdir ~/Dropbox/src/git-server
$ git init ~/Dropbox/src/git-server/MyProject
$ cd ~/Dropbox/src/git-server/MyProject
$ git config --bool core.bare true
$ cd ~/src/project-git
$ git status
# On branch master
nothing to commit (working directory clean)
$ git push --mirror ~/Dropbox/src/git-server/MyProject
$ git remote add dropbox ~/Dropbox/src/git-server/MyProject
$ git push --mirror dropbox
Everything up-to-date
The first batch of commands initialises a new git repository. The repository is flagged as bare so that we can push all branches (including the working branch).
The second batch simply pushes a development repository to the Dropbox one. I use --mirror to push everything over.
The third batch of commands set up a shortcut for the Dropbox repository. I name it "dropbox" so from then on I only have to do "git push dropbox" to push to it (with or without --mirror as required, although I usually use it).
Update: I have since refined my git/dropbox workflow: git sharing with dropbox.
The first batch of commands initialises a new git repository. The repository is flagged as bare so that we can push all branches (including the working branch).
The second batch simply pushes a development repository to the Dropbox one. I use --mirror to push everything over.
The third batch of commands set up a shortcut for the Dropbox repository. I name it "dropbox" so from then on I only have to do "git push dropbox" to push to it (with or without --mirror as required, although I usually use it).
Update: I have since refined my git/dropbox workflow: git sharing with dropbox.