In the last few weeks, I’ve switched over to Git for most of my version-control needs, at home and at work, after putting it on the long finger for months.
We continue to use Subversion at work, but I’ve recently followed Pavel and Eric’s lead in using git-svn. I work locally on my own private branches and git svn dcommit and git svn rebase occasionally. I’m primarily on Windows at work, but I have a Linux box and a Mac Mini too, while at home, I have a MacBook, a Linux netbook, and a Vista desktop. I’m using msysGit, occasionally supplemented by TortoiseGit and QGit. Pavel’s on a Mac and Eric’s mostly on Ubuntu, so git adoption was easy for them.
When I first tried git-svn under msysGit about a year ago, it didn’t work worth a damn. Git-svn works fine now, but it’s slow compared to the *nix implementation. The developers say that’s due to the fork() emulation of the MSys/Cygwin layer. The rest of msysGit is much faster.
For my home needs, I’ve had private Subversion repositories at DevjaVu.com and OpenSvn.csie.org. DevjaVu has gone out of business and OpenSvn has been unavailable too often for my liking. It was time to find some new hosting.
I’ve experimented with private Git repositories at GitHub and ProjectLocker. GitHub is very nice, but charges for private repositories. ProjectLocker provides free private repositories, but is comparatively clunky.
ProjectLocker lets you set up a fresh repository on their server. They tell you how to clone from that, which is great for a new repository. But they don’t tell you how to hook it up to an existing local repository. Since I had some difficulty in figuring it out, here’s the recipe:
git remote add origin git-foobar@freeN.projectlocker.com:foobar.git git pull origin master ... merge, local edits and commits ... git push origin master
I found Git, Xcode and ProjectLocker and Cygwin, SSH and ProjectLocker useful in figuring this out.