I already have the Dropbox client installed and set up on my development machine. Here is how to set up the repo:
cd /path/to/Dropbox mkdir myproject cd myproject git --bare initThis initializes a "bare" repo; a repo without a working directory. In other words, you can't edit and commit to it directly. The repo is now your "remote", hosted on Dropbox, and accessible through the local filesystem.
Create a working clone from the remote repo:
cd /path/to/myproject-working git clone /path/to/Dropbox/myproject .This will complain about cloning an empty repo, which is fine. Now follow the normal git development cycle:
echo "Read this!" > README git add README git commit -m "Initial commit"When you're done making changes and committing, it's time to push to the remote repo in Dropbox:
git push /path/to/Dropbox/myproject --allThe `--all` flag is necessary on the first commit to the remote. It can be left off of all subsequent commits.
That's it! Now the repo is available on any computer linked to the Dropbox account, and can be checked out using the normal `git clone`, work, commit, `git push` cycle.
If you want other developers to have access, simply share the repo directory with their Dropbox accounts as you would any other directory. They can clone it and push to it just like any other git repository.
Here's another trick if you don't have the Dropbox daemon (dropboxd) running all the time on your development machine. Put the following script in "/path/to/Dropbox/myproject/hooks". Name the script "dropbox-push"
#!/bin/sh dropbox running if [ $? -eq 1 ]; then echo "Dropbox started by another process." exit 0 fi dropbox start until [ "`dropbox status`" = "Idle" ]; do sleep 1 done dropbox stopNow make the post-receive hook runnable:
mv post-receive.sample post-receiveEdit the "post-receive" file, and add the following lines:
cd `dirname $0` ./dropbox-pushSave the file. Now whenever you (or another developer) pushes to the repo, it will check to see if the Dropbox daemon is running, and if not, will start it and let it run until the code is synced, then stop the daemon. Since the hook itself is in under Dropbox, it will be synced and will be run for all other developers pushing to the Dropbox repo as well.
So there it is, a free, private git repository; at least, until the repository gets larger than the Dropbox free 2GB limit.