It turns out to be pretty complicated, but here's what I did.
Prepare the SVN repository first. I was going to delete the files from SVN afterward, so it helped to put all the files in one directory (this also makes
filter-branch
easier later.)Checked out the SVN repo using git:
git svn clone http://path/to/svnrepo
. This creates a git version of the svn repo.Using the ideas from this SO post, Detach (move) subdirectory into separate Git repository, I used the
filter-branch --subdirectory-filter
to filter the directory that I wanted, and to remove history of other stuff from SVN that I did not want to keep in git. You can also usegit subtree
, a new feature, as in Howto extract a git subdirectory and make a submodule out of it?Then, using the ideas from this SO post, How do you merge two Git repositories?, I imported the new git repo into the parent project that I wanted to add it to. The accepted answer is incorrect, check out the other answers on that page; you want to do a
git remote add git-proj <path>
followed by agit pull
.Finally, push the changes to the git project.