More on git-svn: I'm getting the hang of using branches and rebase/cherry-pick to stage stuff before checking it in to a shared repository. This is for the situation where you're working on something and committing locally, and partway through you find and fix a bug or implement something that others care about. You want to check it in to the shared repository, but keep the rest of your stuff out of the way.
The trick here is to work on a branch (say
work), and use
git cherry-pick to copy the relevant commits back to the
master branch, test them to make sure they don't depend on any of your other stuff, then
git svn dcommit them. Then
git checkout work; git rebase master to get back to your working branch and reorder your commits so that the ones you committed get pushed down in the history to the Subversion HEAD, and renamed appropriately, with git-svn tags etc.
If you've been working on
master and have a few commits in there, and just want to check some of them in to Subversion, check out the last Subversion commit into a new branch, and go from there:
git checkout -b svn <id of last git-svn commit> then
cherry-pick etc as before, just using
svn instead of