My first experience with version control was using subversion. I set up my own server at work, but the problem there was that I could only check in and out while at work (or on VPN), and I sometimes like to work on projects at home. I then started using Beanstalk, which has a really nice UI and design, but only gives one repository for free and doesn't give SSL access. I then moved to Assembla, which didn't give SSL access, but gave unlimited repos for free. They then decided to start charging, so I looked around again and found xp-dev. XP-Dev was great, unlimited repos, SSL access, and a sufficiently large disk quota. The problem is that they decided that in August they would move SSL access to a paid only service, so it was time to reassess my options.. It was also at this time I decided to move to git instead of svn.
My requirements for git hosting were:
- Unlimited private repositories (or at least, many)
- A large enough quota (> 100M) where I won't realistically have to worry about space
- SSL (or otherwise secure) updates
- Ability to access on and off my work VPN
- Works across platform (primary OSX and Linux)
- A copy of the repo on my work version control server.
What I came up with actually works quite well. I've been a happy user of Dropbox for a while now, so I created a 'git' directory there and initialized some bare repositories. From my local git repos, I push (as a local file) to the Dropbox directory as the origin. That repository then gets automatically updated on each server that has Dropbox installed on it and linked to my account (my work Linux machine and my home OSX machine.) When I am at work, I just pull whatever commits I had made. I also added another remote of my work's version control system and push changes (over ssh) to that as well.
Given git's distributed nature and Dropbox's ability to synchronize changes to multiple places (over SSL no less) all of my requirements are met for version control.